简单粗暴,记录备战过程,持续更新
BFS/DFS
适用场景
实战
实战1 752. 打开转盘锁
实战2 100. 相同的树
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p == null && q == null){
return true;
}
if(p == null || q == null){
return false;
}
boolean left = isSameTree(p.left,q.left);
boolean right = isSameTree(p.right,q.right);
return p.val == q.val && left == true && right == true ? true : false;
}
}
实战3 695. 岛屿的最大面积
class Solution {
public int maxAreaOfIsland(int[][] grid) {
int ans = 0 ;
for(int i = 0; i< grid.length ; i++){
for(int j= 0 ; j < grid[i].length ; j++){
ans = Math.max(maxArea(grid,i,j),ans);
}
}
return ans;
}
private int maxArea(int[][] grid, int i, int j){
if(i < 0 || i >= grid.length || j < 0 || j >= grid[i].length || grid[i][j] == 0){
return 0;
}
grid[i][j] = 0;
int ans = 1;
int left = maxArea(grid, i, j-1 );
int right = maxArea(grid, i, j+1 );
int up = maxArea(grid, i-1, j );
int dowm = maxArea(grid, i+1, j );
return ans + left + right + up + dowm;
}
}