216. 组合总和 III
https://leetcode.cn/problems/combination-sum-iii/description/
dfs调用结束时
res.add(new ArrayList<>(path));
要拷贝一份,不然是可改变的,最后res里是空的。if(sum>n||path.size()>k)return;
要path.size()>k时结束,不能只是看x>9。(当x==10时,其实sum=1+…+9,此时应该添加到结果集中,而不是直接return。)
17. 电话号码的字母组合
https://leetcode.cn/problems/letter-combinations-of-a-phone-number/description/
注意digits长度可以为0,要判断 if(digits.equals(""))return;
String类型比较相等用equals,==比较的是引用变量地址!!
40. 组合总和 II
https://leetcode.cn/problems/combination-sum-ii/description/
不重复的子集:先排序再dfs(排序:Arrays.sort()
)
491. 非递减子序列
https://leetcode.cn/problems/non-decreasing-subsequences/description/
不重复的子集:不能排序的话,在for前定义一个hashset存放每层已经遍历的元素,如果set里有该元素则说明需要跳过这个元素,不然会重复。