题目描述[原题链接][https://leetcode-cn.com/problems/permutations-ii/]
给定一个可包含重复数字的序列,返回所有不重复的全排列。
示例:
输入: [1,1,2]
输出:
[
[1,1,2],
[1,2,1],
[2,1,1]
]
算法描述
这题与之前相比就是可能含有重复元素,所以最重要的是怎样取去重,分析可知,首先将给定的序列进行排序,让后用之前的方法即可,不一样的是需要添加一个判断条件if(i>0&&nums[i]==nums[i-1]&&flag[i]==1)
意思是如果当前的位置不是开头,该元素之前的元素值与当前的值相同,并且之前的值已经使用过了,满足这种情况的时候就跳过这次循环;
C++代码
1 | class Solution { |
Java代码
1 | class Solution { |