Permutations
Given a list of numbers, return all possible permutations and no duplicate.
Example
For nums = [1,2,3], the permutations are:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]解题分析:
首先根据题的规律,可以看出,首先1 开始的组合,然后2开始的组合,然后3 开始的组合,可以利用DFS的方法进行解题,DFS解题技巧,例如结果是求出一个数组的列表,那么DFS的退出条件就是当前current的数组等于给定数组的长度,这时把这个current 加入结果集合中,然后就是DFS 的循环,首先每次都是从头到尾的循环数组中的每一个元素,由于数组中的元素不重复,所以非常简单的可以使用,nums[i] not in current 来跳过已经添加的数组。如果给定的nums数组如果有重复,这样需要另外的方法去解题,同时容易犯错的地方,不要直接使用current 数组,每次复制一个然后添加到result里面,如果直接使用current数组,当删除的时候,会把它整个删除掉。
重要的理解, 必须深刻理解DFS的递归树,
current 初始化的值[]
current =[]
[]
1 2 3
12 13 23 21 31 32
123 132 231 213 312 321 result.append()Last updated
Was this helpful?