Leetcode 789 逃脫阻礙者

2021-08-31 07:27:23 字數 1147 閱讀 7515

你在進行乙個簡化版的吃豆人遊戲。你從(0, 0)點開始出發,你的目的地是(target[0], target[1])。地圖上有一些阻礙者,第 i 個阻礙者從(ghosts[i][0], ghosts[i][1])出發。

每一回合,你和阻礙者們*可以*同時向東,西,南,北四個方向移動,每次可以移動到距離原位置1個單位的新位置。

如果你可以在任何阻礙者抓住你之前到達目的地(阻礙者可以採取任意行動方式),則被視為逃脫成功。如果你和阻礙者同時到達了乙個位置(包括目的地)都不算是逃脫成功。

當且僅當你有可能成功逃脫時,輸出 true。

示例 1:

輸入:

ghosts = [[1, 0], [0, 3]]

target = [0, 1]

輸出:true

解釋:你可以直接一步到達目的地(0,1),在(1, 0)或者(0, 3)位置的阻礙者都不可能抓住你。

示例 2:

輸入:

ghosts = [[1, 0]]

target = [2, 0]

輸出:false

解釋:你需要走到位於(2, 0)的目的地,但是在(1, 0)的阻礙者位於你和目的地之間。

示例 3:

輸入:

ghosts = [[2, 0]]

target = [1, 0]

輸出:false

解釋:阻礙者可以和你同時達到目的地。

說明:

很有意思的題目。一開始我總是在想如何才能判定阻礙者能不能抓住逃脫者,在半路上的情況十分複雜不知如何解決,真是太菜了,腦袋瓜子轉不過來!其實只要判定其中乙個阻礙者能比逃脫者早到或者同時到目的地,就可以判斷逃脫者逃脫失敗了。這時候只需要比較阻礙者與逃脫者到達目的地的步數大小就可以了,十分簡單!

**如下:

bool escapeghosts(int** ghosts, int ghostsrowsize, int *ghostscolsizes, int* target, int targetsize) 

}return true;

}

程式設計珠璣 第7 8 9章

基本技巧 兩個答案比乙個答案好 快速檢驗 量綱檢驗 經驗法則 實踐little定律 系統中物體的平均數量等於物體離開系統 的平均速率和每個物體在系統中停留的平均時間的乘積 任何事都應盡量簡單,但不宜過於簡單 複雜深奧的演算法有時可以極大地提高程式效能 重要的演算法設計技術 儲存狀態,避免重複計算。通...

AcWing 789 數的範圍

給定乙個按照公升序排列的長度為n的整數陣列,以及 q 個查詢。對於每個查詢,返回乙個元素k的起始位置和終止位置 位置從0開始計數 如果陣列中不存在該元素,則返回 1 1 輸入格式 第一行包含整數n和q,表示陣列長度和詢問個數。第二行包含n個整數 均在1 10000範圍內 表示完整陣列。接下來q行,每...

AcWing 789 數的範圍

題目描述 給定乙個按照公升序排列的長度為n的整數陣列,以及 q 個查詢。對於每個查詢,返回乙個元素k的起始位置和終止位置 位置從0開始計數 如果陣列中不存在該元素,則返回 1 1 輸入格式 第一行包含整數n和q,表示陣列長度和詢問個數。第二行包含n個整數 均在1 10000範圍內 表示完整陣列。接下...