簡單深度優先遍歷oj

2021-10-12 10:25:09 字數 2832 閱讀 9559

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對應的節點 遍歷過...