491.递增子序列
文档和视频讲解:代码随想录(programmercarl.com)
状态:未ac
用时:1h
思路:当路径size大于1就可以把当前路径放入结果中。用一个数组作为哈希表,来作为树层之间的去重。循环的时候如果路径不为空且路径最后的值大于当前值,或者当前数已经使用过了,都跳过。然后才进入递归和回溯。注意在此之前更改该值在哈希数组中的标识。
代码:
46.全排列
文档和视频讲解:代码随想录(programmercarl.com)
状态:ac
用时:1h
思路:第一个方法是通过与当前位置进行交换,递归后在交换回去就行了。在当前位置到达数组最后时,可以把数组放入结果中。
第二个是用一个数组表示path中收录了的数字。每次递归函数中,都从头开始循环。
代码:
47.全排列 II
文档和视频讲解:代码随想录(programmercarl.com)
状态:未ac
用时:1h
思路:通过交换的方法需要一个set来存放树层已经选取过的数字,来避免树层的重复。
通过选取的方法,由于需要从头开始遍历,为了避免树层重复,除了需要和之前的数字比较是否相同,还需要保证前一个数在used数组中为false。如果i-1和i位置上两个数相同且used[i-1] = true,表示是树枝重复。
代码: