dfs
九幽孤翎
蜉蝣只有认清自己的渺小,才能有化茧成蝶的一天
展开
-
Leetcode_241_为运算表达式设计优先级_记忆化dfs
将问题递归成子问题 对于a * b - c 可以先以运算符为分界 比如以-号为分界 -号左侧a * b -号右侧c 所以总的结果中包含(a * b) - c a * b的结果同样递归 以此类推在运算过程中有大量的中间态结果是重复需要的,所以用记忆化dfs的方式即可...原创 2022-07-01 14:00:27 · 148 阅读 · 0 评论 -
Leetcode_1020_飞地的数量_dfs
朴实无华的深搜 class Solution { int n; int m; int ans; boolean[][] vis; int[][] grid; int[][] direction = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; public int numEnclaves(int[][] grid) { n = grid.length; m = grid[0].length;原创 2022-02-12 10:54:26 · 247 阅读 · 0 评论 -
Leetcode_638_大礼包_dfs
这题就nm离谱,剪枝反而更慢了。 这里我没有使用官方的记忆化搜索,而是通过控制选取礼包的起点,也就是函数中的那个参数st,来保证不重复选取礼包的组合,事实证明我的做法更优。这里有个莫名其妙的点卡了我好久,就是回溯的时候,我一开始是用了个临时变量存储needs,然后每次选取完,将needs变回来,最后发现老是出问题,也不知道为什么,后来我直接把临时变量传过去,不改变needs,就ac了。 思路的话没啥好说的,就是硬搜,毫无技巧可言,有点像那个完全背包。 import java.util.ArrayList;原创 2021-10-24 09:20:18 · 1582 阅读 · 0 评论 -
Leetcode_78_子集_dfs
我这个start就很妙,完美去重 // 冲刺063 import java.util.ArrayList; import java.util.Deque; import java.util.LinkedList; import java.util.List; // 冲刺063 class Solution { public List<List<Integer>> subsets(int[] nums) { List<List<Integer>原创 2021-09-08 13:30:51 · 126 阅读 · 0 评论 -
Leetcode_51_N皇后_搜索
import java.util.*; // 冲刺058 class Solution { public List<List<String>> solveNQueens(int n) { List<List<String>> ans = new ArrayList<>(); List<List<Integer>> all = new ArrayList<>();原创 2021-09-07 15:18:55 · 86 阅读 · 0 评论 -
Leetcode_46_全排列_dfs
// 冲刺032 class Solution { int len; public List<List<Integer>> permute(int[] nums) { List<List<Integer>> ans = new LinkedList<>(); len = nums.length; dfs(new boolean[len], nums, new Lin原创 2021-08-29 20:37:20 · 87 阅读 · 0 评论 -
Leetcode_200_岛屿数量_dfs
// 冲刺021 class Solution { static int maxX; static int maxY; final int[][] direction = new int[][]{{0, -1}, {0, 1}, {-1, 0}, {1, 0}}; public int numIslands(char[][] grid) { maxX = grid[0].length; maxY = grid.length;原创 2021-08-25 15:45:05 · 76 阅读 · 0 评论 -
Leetcode_797_所有可能的道路_dfs
深搜啪的一下就完事了。 一开始想用广搜,后来发现还得自定义class,太麻烦了。 class Solution { public List<List<Integer>> allPathsSourceTarget(int[][] graph) { final List<List<Integer>> ans = new LinkedList<>(); final Deque<Integer> list原创 2021-08-25 12:14:23 · 72 阅读 · 0 评论 -
Leetcode_54_螺旋矩阵_模拟
// 冲刺006 class Solution { public List<Integer> spiralOrder(int[][] matrix) { // x为行,y为列 List<Integer> ans = new ArrayList<>(); ans.add(matrix[0][0]); int[][] move = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};原创 2021-08-20 13:49:38 · 76 阅读 · 0 评论 -
Leetcode_690_员工的重要性_dfs
class Solution { Map<Integer, Employee> map = new HashMap<Integer, Employee>(); public int getImportance(List<Employee> employees, int id) { for (Employee employee : employees) { map.put(employee.id, employee)原创 2021-05-01 23:18:42 · 96 阅读 · 0 评论 -
Leetcode_842_将数组拆分成斐波那契数列_dfs
12/8 你管这叫难度中等??? 搜索剪枝 贴一位老哥的搜索模板 private void backtrack("原始参数") { //终止条件(递归必须要有终止条件) if ("终止条件") { //一些逻辑操作(可有可无,视情况而定) return; } for (int i = "for循环开始的参数"; i < "for循环结束的参数"; i++) { //一些逻辑操作(可有可无,视情况而定)原创 2020-12-08 21:37:24 · 341 阅读 · 1 评论