491.递增子序列
给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。
思路:而本题求自增子序列,是不能对原数组进行排序的。因此去重的逻辑变成:在每一层里面,都定义一个used,如果一个数字被用过了,就不能再用。
46.全排列
给定一个 没有重复 数字的序列,返回其所有可能的全排列。
47.全排列 II
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。
思路:1. 去重一定要对元素进行排序,这样我们才方便通过相邻的节点来判断是否重复使用了。2. 因为这里的used集合是在树枝上传递,因此要先保证前一个相等元素不在树枝上,而是在同一层,此时才能使用去重逻辑。
以下是卡哥资料
491.递增子序列
本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。
https://programmercarl.com/0491.%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.html
视频讲解:https://www.bilibili.com/video/BV1EG4y1h78v
46.全排列
本题重点感受一下,排列问题 与 组合问题,组合总和,子集问题的区别。 为什么排列问题不用 startIndex
https://programmercarl.com/0046.%E5%85%A8%E6%8E%92%E5%88%97.html
视频讲解:https://www.bilibili.com/video/BV19v4y1S79W
47.全排列 II
本题 就是我们讲过的 40.组合总和II 去重逻辑 和 46.全排列 的结合,可以先自己做一下,然后重点看一下 文章中 我讲的拓展内容。 used[i - 1] == true 也行,used[i - 1] == false 也行
https://programmercarl.com/0047.%E5%85%A8%E6%8E%92%E5%88%97II.html