417. 太平洋大西洋水流問題 Medium
Leetcode筆記目錄
一、題目描述
給定一個 m x n 的非負整數矩陣來表示一片大陸上各個單元格的高度。“太平洋”處於大陸的左邊界和上邊界,而“大西洋”處於大陸的右邊界和下邊界。
規定水流只能按照上、下、左、右四個方向流動,且只能從高到低或者在同等高度上流動。
請找出那些水流既可以流動到“太平洋”,又能流動到“大西洋”的陸地單元的座標。
二、解題過程
1.思想
思想比較難想到,如果遍歷每個點代價會很大,但如果從周圍的大洋四個邊逆推dfs則可以完成目標:
- 題目要求能流到大西洋和太平洋,因此設定兩個visited陣列,只有滿足條件後才visit;
- 分別遍歷四條邊,並以四條邊上的每個點做起點進行dfs,根據依靠大洋的不同更新相應的visited陣列。
- 兩個visited陣列都true的點是符合條件的點。
2.程式碼
int derict[5]={-1,0,1,0,-1};
void dfs(vector<vector<int>>& matrix,vector<vector<bool>>& can,int r,int c){
if(can[r][c])return;
can[r][c]=true;
int x,y;
for(int i=0;i<4;i++){
x=r+derict[i];y=c+derict[i+1];
if(x>=0&&x<matrix.size()&&y>=0&&y<matrix[0].size()&&matrix[x][y]>=matrix[r][c])dfs(matrix,can,x,y);
}
}
vector<vector<int>> pacificAtlantic(vector<vector<int>>& matrix) {
if(matrix.empty())return {}; //錯誤1 邊界判斷以及怎麼邊界判斷
vector<vector<int>> result;
int n=matrix.size();int m=matrix[0].size();
vector<vector<bool>> Pcan(n,vector<bool>(m,false));
vector<vector<bool>> Acan(n,vector<bool>(m,false));
for(int i=0;i<n;i++){
dfs(matrix,Pcan,i,0);
dfs(matrix,Acan,i,m-1);
}for(int i=0;i<m;i++){
dfs(matrix,Pcan,0,i);
dfs(matrix,Acan,n-1,i);
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(Pcan[i][j]&&Acan[i][j])
result.push_back({i,j});
return result;
}
- 錯誤
- 要注意邊界判斷,以及怎麼返回一個空的二維陣列
三、總結
思想不會的題目,比較困難。
相關文章
- leetcode 417. Pacific Atlantic Water Flow 太平洋大西洋水流問題LeetCode
- Doris建立表報錯Failed to find enough host with storage medium問題解決AI
- [LeetCode] 417. Pacific Atlantic Water FlowLeetCode
- Exact Neighbours (Medium)
- [Typescript] 152 Medium - IsOddTypeScript
- [Typescript] 151. Medium IsUnionTypeScript
- [Typescript] Medium 152. IsFixedStringLiteralTypeTypeScript
- 【LeetCode】455. Assign Cookies 分發餅乾(Medium)(JAVA)每日一題LeetCodeCookieJava每日一題
- LeetCode - Medium - 322. Coin ChangeLeetCode
- 在汙水流量測量中幾種工廠汙水流量計的綜合比較
- [LeetCode 刷題] 3. 無重複字元的最長子串 (Medium)LeetCode字元
- Leetcode-Medium 621. Task SchedulerLeetCode
- 2022 年 DevOps 路線圖|Mediumdev
- LeetCode - Medium - 11. Container With Most WaterLeetCodeAI
- LeetCode 207. 課程表(Medium)LeetCode
- [譯] Medium 的 GraphQL 服務設計
- 超酷!!HTML5 Canvas 水流樣式 Loading 動畫HTMLCanvas動畫
- CSS Grid重構Medium的文章佈局CSS
- Medium裡面的react相關文章記錄React
- 如何用3D流體實現逼真水流效果?3D
- 【Medium 萬贊好文】ViewModel 和 LiveData:模式 + 反模式ViewLiveData模式
- leetcode240——搜尋二維矩陣(medium)LeetCode矩陣
- LeetCode 452. Minimum Number of Arrows to Burst Balloons Sort/MediumLeetCode
- 問題 C: 百雞問題
- 【問題】Nacos 使用問題整理
- 什麼是P問題、NP問題和NPC問題
- 博基計劃(3)---P問題、NP問題、NPC問題、NP-hard問題
- 中美晶片黑客案預示一場真正的危機 | 大西洋月刊晶片黑客
- Unity 高清渲染管線 ShaderGraph 實現簡單的表面水流效果Unity
- [譯]將你的Medium文章匯出成Markdown格式
- 家裡的水管水壓不夠是一個比較常見的問題,可能會影響日常生活中的水流和水量。針對水壓不足,可以採取不同的解決方案。根據問題的具體情況(例如水壓過低、穩定性差等),可以有幾種不同的方法來提高水壓或改善水流情況:
- [轉載]什麼是P問題、NP問題和NPC問題
- 【問題記錄】—.NetCore 編譯問題NetCore編譯
- GSMA:2019太平洋島國移動經濟報告
- 劍指Offer 47. 禮物的最大價值(Medium)
- 提問題比解決問題更重要
- [開發問題]React-native問題集React
- 約瑟夫問題(丟手絹問題)