Question
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
[1,1,2]
have the following unique permutations:
1 |
|
Analysis
还是回溯问题。这是之前的Permutations的延伸。这里进一步给出了有重复数字的数组,要求解没有重复。简单的可以用set的唯一性。这里想要一种直接的方法把相同的解过滤掉。这就是针对相同的数字,怎么来处理。也是参考了各种解法,这里用visited的数组,进一步判断,要求对于相同的数字,之前的数字必须访问过之后,才可以访问后面的数字。比如这里有两个 1, 我们记为 1, 1'
, 这样的话我们只有1, 1'
是一个合适的解,而1', 1
则不是,也就是说要求相同的数字的时候,规定一个顺序,只有复合一种顺序的是一个解。所以代码里进一步判断,只有当前面的1被访问过之后,才算是一个解,否则就continue
Solution
1 |
|
1 |
|