leetcode-Permutations II-47
Posted 0_summer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-Permutations II-47相关的知识,希望对你有一定的参考价值。
输入一个数组,字典序输出所有排列,输入的数组中元素可能有重复。
详细思路看上一篇博文,这里重点说一下去重:
上一篇的去重不完善,思路是完善的,代码不完善,加了一个判断才对,具体看代码注释
1 class Solution { 2 public: 3 void func(vector<vector<int> > &v,vector<int> a,int low,int high){ 4 if(low==high-1){ 5 v.push_back(a); 6 return; 7 } 8 for(int i=low;i<high;i++){ 9 if(i!=low&&a[i]==a[low]||(i>0&&i!=low&&a[i]==a[i-1])) continue; //这里的||后面的判断才是真正判断同一层中一个相同值的元素只递归一次 10 swap(a[i],a[low]); 11 sort(a.begin()+low+1,a.end()); 12 func(v,a,low+1,high); 13 swap(a[i],a[low]); 14 } 15 } 16 vector<vector<int>> permuteUnique(vector<int>& nums) { 17 vector<vector<int> > v; 18 sort(nums.begin(),nums.end()); 19 func(v,nums,0,nums.size()); 20 return v; 21 } 22 };
以上是关于leetcode-Permutations II-47的主要内容,如果未能解决你的问题,请参考以下文章