417 太平洋大西洋水流問題 Medium

2021-10-10 14:55:43 字數 1099 閱讀 6973

三、總結

給定乙個m x n的非負整數矩陣來表示一片大陸上各個單元格的高度。「太平洋」處於大陸的左邊界和上邊界,而「大西洋」處於大陸的右邊界和下邊界。

規定水流只能按照上、下、左、右四個方向流動,且只能從高到低或者在同等高度上流動。

請找出那些水流既可以流動到「太平洋」,又能流動到「大西洋」的陸地單元的座標。

思想比較難想到,如果遍歷每個點代價會很大,但如果從周圍的大洋四個邊逆推dfs則可以完成目標:

int derict[5]

=;void

dfs(vector

int>>

& matrix,vector>

& can,

int r,

int c)

} vector

int>>

pacificatlantic

(vector

int>>

& matrix)

;//錯誤1 邊界判斷以及怎麼邊界判斷

vector

int>> result;

int n=matrix.

size()

;int m=matrix[0]

.size()

; vector>

pcan

(n,vector

(m,false));

vector>

acan

(n,vector

(m,false));

for(

int i=

0;i)for

(int i=

0;i)for

(int i=

0;i)for

(int j=

0;j(pcan[i]

[j]&&acan[i]

[j])

result.

push_back()

;return result;

}

思想不會的題目,比較困難。

417太平洋大西洋水流問題

採用逆向思維,從陣列的最外邊開始遍歷,向陣列中心開始遍歷,如果太平洋和大西洋都被訪問過,那麼當前節點就就符合題目條件。class solution,bool iseffective int x,int y void dfs int x,int y,int pre,vector bool shuzu,...

417 太平洋大西洋水流問題

給定乙個 m x n 的非負整數矩陣來表示一片大陸上各個單元格的高度。太平洋 處於大陸的左邊界和上邊界,而 大西洋 處於大陸的右邊界和下邊界。規定水流只能按照上 下 左 右四個方向流動,且只能從高到低或者在同等高度上流動。請找出那些水流既可以流動到 太平洋 又能流動到 大西洋 的陸地單元的座標。目前...

417 太平洋大西洋水流問題

典型的搜尋演算法,不過這次搜尋的目標有兩個,到達太平洋和大西洋。需要寫兩個dfs遞迴函式。演算法流程 遍歷圖中所有點,呼叫深度遞迴函式。如果該點既能到達太平洋又能夠到達大西洋。那麼將這個點加入結果集。返回結果集合 這裡的遞迴算是深度優先遍歷的模板步驟吧。不過這裡標記是否訪問用了乙個小技巧,修改原陣列...