![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DFS_or_BFS
傅里叶不想变换_
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 38. 字符串的排列
class Solution { List<String> res = new ArrayList<>(); public String[] permutation(String s) { char[] arr = s.toCharArray(); Arrays.sort(arr); backtarcking(arr, new boolean[arr.length], new StringBuilder()); .原创 2021-08-24 19:33:38 · 69 阅读 · 0 评论 -
岛屿问题总结
这里写目录标题树和网格的DFS模板200. 岛屿数量695. 岛屿的最大面积树和网格的DFS模板二叉树的 DFS 有两个要素:「访问相邻结点」和「判断 base case」访问相邻结点:递归访问左右子树判断 base case:一般来说,二叉树遍历的 base case 是 root == null。这样一个条件判断其实有两个含义:一方面,这表示 root 指向的子树为空,不需要再往下遍历了。另一方面,在 root == null 的时候及时返回,可以让后面的 root.left 和 root.ri原创 2021-08-19 11:56:58 · 160 阅读 · 0 评论 -
279. 完全平方数
思路:BFS,每一次是原数字减去了一个平方数,直到出现第一个0,此时走过的层数就是最小数量。比如传入的数是7,那应该就是如果传入16,那应该就是16->15,12,7,0 答案就是层数,也就是1.class Solution { public int numSquares(int n) { Queue<Integer> queue=new LinkedList<>(); HashSet<Integer> visite.原创 2021-08-09 22:27:03 · 79 阅读 · 0 评论 -
剑指 Offer 13. 机器人的运动范围
思路:DFS或者BFSDFS版本class Solution { public int movingCount(int m, int n, int k) { boolean[][] visited = new boolean[m][n]; return dfs(m, n, k, visited, 0, 0); } public int dfs(int m, int n, int k, boolean[][] visited, int x, .原创 2021-03-02 19:26:40 · 74 阅读 · 0 评论 -
剑指 Offer 32 - III. 从上到下打印二叉树 III
思路: BFS,定义一个List<List<Integer>> ans,定义临时的LinkedList<Integer> tmp,遍历一层就把tmp加入到 ans中。注意: 奇偶层时,tmp加入顺序不同,可以用layer表示层数,也可以用布尔变量 flag记录,或者可以用 res.size()记录。如果res.size() % 2 == 1则表示奇数层。class Solution { public List<List<Integer&g.原创 2021-01-15 19:19:50 · 86 阅读 · 0 评论 -
Leetcode 22. 括号生成
思想:递归,递归终止条件:左括号个数为0且右括号个数为0注意两个条件:1.剩余左右括号数相等,下一个只能用左括号 2.剩余左括号小于右括号,下一个可以用左括号也可以用右括号class Solution { List<String> res = new ArrayList<>(); public List<String> generateParenthesis(int n) { if(n <= 0){ .原创 2021-01-01 12:22:22 · 102 阅读 · 0 评论 -
Leetcode 79. 单词搜索
思路:回溯,注意复原现场。class Solution { public boolean exist(char[][] board, String word) { char[] words = word.toCharArray(); for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[0].length; j++) { .原创 2020-12-27 18:51:32 · 72 阅读 · 0 评论 -
Leetcode 547. 朋友圈
思路1:实质上就是求无向图连通块的个数,我们从每个未被访问的节点开始深度优先遍历,每开始一次搜索就增加 count 计数器一次class Solution { public int findCircleNum(int[][] M) { int n = M.length; int[] visited = new int[n]; int count = 0; for(int i = 0; i < M.length; i++){ .原创 2020-12-27 15:16:20 · 66 阅读 · 0 评论