回溯算法
冒 菜
这个作者很懒,什么都没留下…
展开
-
leecode 491. 递增子序列
491. 递增子序列 本题和子集||看起来是相似的,看起来可以用boolean数组判断是否重复,但是实际上本题不能这么做,因为本题不是有序数组,而是要判断是否有序,因此需要换个思路。做回溯类题最重要的是画图,画图难度少一大半,而且逻辑性很强class Solution { List<List<Integer>> res = new ArrayList<>(); LinkedList<...原创 2022-03-05 10:28:07 · 106 阅读 · 0 评论 -
leecode 90. 子集 II
90. 子集 II本题需要在子集1的基础上去重,集合中可以有重复,但是求得的所有子集不能有重复。属于树层去重,可以用used数组来表示是否重复过。class Solution { List<List<Integer>> res = new ArrayList<>(); LinkedList<Integer> path = new LinkedList<>(); b...原创 2022-03-05 09:26:22 · 229 阅读 · 0 评论 -
leecode 93. 复原 IP 地址
93. 复原 IP 地址本题需要画图具体判断,由于分支太多,直接剪枝符合要求的结果即可。class Solution { List<String> res = new LinkedList<>(); public List<String> restoreIpAddresses(String s) { if (s == null || s.length() == 0 || s.length() >.原创 2022-03-04 10:29:14 · 100 阅读 · 0 评论 -
leecode 131. 分割回文串
131. 分割回文串本题核心思想:具体可以看代码随想录解释,把这题最简化了。 最好理解:class Solution { List<List<String>> res = new ArrayList<>(); LinkedList<String> path = new LinkedList<>(); public List<List<String>> pa...原创 2022-03-04 08:57:08 · 164 阅读 · 0 评论 -
leecode 40. 组合总和 II
40. 组合总和 II 本题是组合总和的加强版,要求不能够有重复的集合,但是集合中可以有重复元素,第一想法是按照正常做法进行然后利用哈希表储存,但是这样做会超时,只能另寻他法,这里可以看看代码随想录的思想,利用一个新的boolean数组判断,具体如下:class Solution { List<List<Integer>> res = new ArrayList<>(); LinkedList<Integer...原创 2022-03-03 18:43:04 · 91 阅读 · 0 评论 -
leecode 39. 组合总和
39. 组合总和 经典回溯,但是本题是可以重复利用数字求和的,代码如下:class Solution { List<List<Integer>> res = new ArrayList<>(); LinkedList<Integer> path = new LinkedList<>(); public List<List<Integer>> combina...原创 2022-03-03 15:53:37 · 97 阅读 · 0 评论 -
leecode 17. 电话号码的字母组合
17. 电话号码的字母组合 本题进一步强化了回溯的做法,需要用到字符串相关API,挺头疼。class Solution { // 数字到号码的映射 private String[] map = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; // 路径 private StringBuilder sb = new StringBuilder(); // 结果集 ...原创 2022-03-03 15:07:48 · 160 阅读 · 0 评论 -
leecode 216. 组合总和 III
216. 组合总和 III 本题是力扣77.组合的升级版,原来是要求求出所有符合条件k和n的集合,本题要在上一题的基础上求出集合的和,符合条件的输出为集合,因此可以回溯算法。//普通回溯+递归:class Solution { List<List<Integer>> res = new ArrayList<>(); LinkedList<Integer> path = new LinkedList&...原创 2022-03-02 14:07:42 · 177 阅读 · 0 评论 -
leecode 77. 组合
77. 组合 本题是继二叉树后第一次接触回溯算法的的第一个算法题。具体可看代码随想录 回溯算法。class Solution {//ArrayList和LinkedList区别//前者基于数组实现,后者基于双链表实现//前者对搜索元素复杂度O(1),而插入删除开销较大;后者相反//但是如果在末尾插入元素,ArrayList需要开销相对较小,本题是直接在末尾添加path//而且ArrayList的内存使用量较小,所以用ArrayList List&...原创 2022-03-02 10:52:54 · 144 阅读 · 0 评论