leetcode733-影象渲染
思路:四個方向上分別試探,滿足條件就修改顏色,不滿足return
class
solution
return image;
}public
void
dfs(
int sr,
int sc,
int[
] image,
int cur,
int newcolor)
else
}}
leetcode200-島嶼數量
思路:從起點開始搜尋,每搜尋到乙個1就將其置為0,當本次搜尋結束時,說明找到乙個島嶼
class
solution
int r = grid.length;
int c = grid[0]
.length;
int ans =0;
for(
int i =
0;i < r;i++)}
}return ans;
}public
void
dfs(
int i,
int j,
char
grid)
grid[i]
[j]=
'0';
dfs(i -
1,j,grid)
;dfs
(i +
1,j,grid)
;dfs
(i,j -
1,grid)
;dfs
(i,j +
1,grid);}
public
boolean
check
(int i,
int j,
char
grid)
}
leetcode130-被圍繞的區域
思路:與常規思路不同,本題用dfs排除掉不合理的位置,而不是直接dfs求解
class
solution
int r = board.length;
int c = board[0]
.length;
for(
int i =
0; i < r;i++
)for
(int i =
1; i < c;i++
)for
(int i =
0; i < r;i++
)else
if(board[i]
[j]==
'o')}}
}public
void
dfs(
char
board,
int i,
int j)
board[i]
[j]=
'q';
//將不合理項都改為q,用來辨識該項是否合理
dfs(board,i -
1,j)
;dfs
(board,i +
1,j)
;dfs
(board,i,j -1)
;dfs
(board,i,j +1)
;}}
leetcode面試題16.19-水域大小
思路:dfs搜尋八個方向,將搜尋過的值置為-1
class
solution}}
collections.
sort
(ans)
;int
res =
newint
[ans.
size()
];for(
int i =
0; i < res.length;i++
)return res;
}public
intdfs
(int i,
int j,
int[
] land)
count++
; land[i]
[j]=-1
; count +=
dfs(i -
1,j,land)
; count +=
dfs(i +
1,j,land)
; count +=
dfs(i,j -
1,land)
; count +=
dfs(i,j +
1,land)
; count +=
dfs(i -
1,j -
1,land)
; count +=
dfs(i -
1,j +
1,land)
; count +=
dfs(i +
1,j -
1,land)
; count +=
dfs(i +
1,j +
1,land)
;return count;
}public
boolean
check
(int i,
int j,
int[
] land)
else
}}
基礎 簡單的深度優先遍歷
輸出1,2,3,4,5,6,7 這幾個數組成的全排列 ps 可以使用列舉 但是需要7層迴圈 使用遞迴 深度優先遍歷的思路,dfs也可利用棧資料結構來實現,lifo package com.nxz.blog.othertest 簡單的深度優先遍歷演算法學習 public class test03 0 ...
深度優先遍歷 廣度優先遍歷
用棧進行儲存元素。訪問頂點 頂點入棧,以便記住它 標記頂點,以便不會再訪問它 2 訪問規則 a.如果可能,訪問乙個鄰接的未訪問頂點,標記它,併入棧。b.當不能執行a時 沒有鄰接的未訪問頂點 如果棧不為空,就從棧中彈出乙個頂點。c.如果不能執行規則a和b,就完成了整個搜尋過程。3 實現 基於以上規則,...
深度優先遍歷
第一步 從開始節點查詢可達節點,如果有沒到過的可達節點則第二部,否則第三步 第二部 便利到下乙個可達節點,記錄下該節點已經到達節點 第三步 回到上一步的節點再從第一步開始 乙個節點對應他的可達節點用map表示,map的key和value分別是integer和list 用來存放key對應的節點 遍歷過...