lintcode 663 牆和門 迷宮問題bfs

2021-10-05 03:07:34 字數 1339 閱讀 4407

您將獲得乙個使用這三個可能值初始化的 m×n 2d 網格。

-1 - 牆壁或障礙物。

0 - 門。

inf - infinity是乙個空房間。我們使用值 2 ^ 31 - 1 = 2147483647 來表示inf,您可以假設到門的距離小於 2147483647。

在代表每個空房間的網格中填入到距離最近門的距離。如果不可能到達門口,則應填入 inf。

樣例

樣例1輸入:[[

2147483647,-

1,0,

2147483647],

[2147483647

,2147483647

,2147483647,-

1],[

2147483647,-

1,2147483647,-

1],[

0,-1

,2147483647

,2147483647]]

輸出:[[3

,-1,

0,1]

,[2,

2,1,

-1],

[1,-

1,2,

-1],

[0,-

1,3,

4]]解釋:

2d網路為:

inf -

10 inf

inf inf inf -

1inf -

1 inf -10

-1 inf inf

答案為:

3-10

1221

-11-

12-1

0-13

4樣例2

輸入:[[0

,-1]

,[2147483647

,2147483647]]

輸出:[[0

,-1]

,[1,

2]]

思路:

1、找到所有門所在的位置。

2、從門的地方開始進行廣度搜尋,門剛好是0,所以找到的每個房間值應該修改為上乙個房間值+1

3、要注意乙個房間被多次搜尋時,一定是第一次被搜到的值最小,所以,當乙個房間值不是2147483647時,就沒有必要再去修改了,這樣也避免了陷入死迴圈。

class

solution

;void

wallsandgates

(vectorint>>

&rooms)}}

int dx[4]

=;int dy[4]

=;while

(!q.

empty()

)}}}

};

lintcode 6 6 合併排序陣列

合併兩個排序的整數陣列a和b變成乙個新的陣列。您在真實的面試中是否遇到過這個題?yes 樣例給出a 1,2,3,4 b 2,4,5,6 返回 1,2,2,3,4,4,5,6 挑戰 你能否優化你的演算法,如果其中乙個陣列很大而另乙個陣列很小?標籤 相關題目 class solution public ...

6 6 痕跡清理

6.6.1.4.時間軸 6.6.2.linux 6.6.3.難點 6.6.4.注意 登入日誌 6.6.1.3.1.prefetch 預讀取資料夾,用來存放系統已訪問過的檔案的預讀資訊,擴充套件名為pf。位置在c windows prefetch。6.6.1.3.2.jumplists 6.6.1.3...

總結之一6 6

獵頭不是槍手 獵頭公司不是包辦公司,也不是幫候選人寫簡歷的槍手,候選人往往希望獵頭公司給他們的簡歷 潤色 但是包裝只是對簡歷本身而言讓你的優勢更突出,絕不會幫助你 包裝 你本身不具備的能力。另外簡歷一定不能做假,因為現在越來地越多的公司會做背景調查,職位越高,做調查的時間越長。當然,獵頭會幫助你整合...