Description
这里举leetcode中的46,47,77,78,90这几道题【难度: medium】
都是dfs问题,当然可以用其他的方法解决
全排列部分[1,2,3]
的全排列如下:
|
|
又如[1,1,2]
的全排列如下:
|
|
子串部分
从小于等于n的数中选取k个数的集合,如n=4,k=2的情况如下:
|
|
[1,2,3]
的全部子串:
|
|
[1,2,2]
的全部子串:
|
|
Solution
46.Permutations
全排列的最基本解法:dfs
以1,2,3为例,第一次选择可以选1,2或者3,
然后第二次选择:如果第一次选择的是1则此次对应的是2和3;2对应的是1和3;3对应的是1和2
最后第三次选择,选择剩下的即可
下面使用python实现的:
思路就是每一次从剩下元素组成的数组中挑选出一个元素来
|
|
47.Permutations II
这个题是上面一道题的衍生,开始我用python做的时候,是先按照没有重复元素的方法做,然后再去重;发现超时了,不过这个题目和上面的题目的区别在于:元素选取时,必须满足相同元素选取的顺序不能变(即相同元素的第一个元素必须在第二个元素的前面)
|
|
77.Combinations
从n个元素中选k个的所用组合方式,这里用的是dfs
|
|
78. Subsets
|
|
90. Subsets II
这个去重部分,可以好好思考一下
|
|