[LeetCode]Permutations II
来源:互联网 发布:高清矩阵 编辑:程序博客网 时间:2024/04/29 04:07
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,1,2]
, [1,2,1]
, and [2,1,1]
.
[思路]DFS搜寻解,和之前不同的是要判断重复解的情况。
去重的全排列就是从第一个数字起每个数分别与它后面非重复出现的数字交换。
之前交换过那就会导致后续解和之前出现重复解。
class Solution {public: vector<vector<int>> permuteUnique(vector<int>& nums) { vector<vector<int>> ret; recursion(nums,0,ret); return ret; } void recursion(vector<int> &nums,int index,vector<vector<int>> &ret){ if(index == nums.size()-1){ ret.push_back(nums); return; } for(int i=index; i<nums.size(); ++i){ if(dupsolution(nums,index,i)) continue; swap(nums[index],nums[i]); recursion(nums,index+1,ret); swap(nums[i],nums[index]); } } void swap(int &a,int &b){ int temp = a; a = b; b = temp; } bool dupsolution(vector<int> nums,int step,int end){ //如果在[index,j)中出现和j一样的值,说明对j的交换操作在之前出现过,是其重复解 for(int i=step; i<end; ++i){ if(nums[i] == nums[end]) return true; } return false; }};
0 0
- 【LeetCode】Permutations && Permutations II
- leetcode: Permutations/Permutations II
- leetcode Permutations & Permutations II
- [Leetcode]Permutations && Permutations II
- Leetcode: Permutations and Permutations II
- leetcode-permutations and permutations II
- Leetcode:Permutations与Permutations II
- LeetCode: Permutations II
- LeetCode Permutations II
- LeetCode: Permutations II
- [Leetcode] Permutations II
- [LeetCode] Permutations II
- [Leetcode] Permutations II
- leetcode Permutations II
- [LeetCode]Permutations II
- leetcode - Permutations II
- LeetCode-Permutations II
- [leetcode] Permutations II
- 树形dp之删边
- 65. 雇员管理系统(2)
- 序言
- 我的sublime python环境配置
- maven学习2——pom.xml
- [LeetCode]Permutations II
- 学习算法,编程之路
- 编写一个将输入复制到输出的程序 ,并将其中连续的多个空格用一个空格代替 //学习笔记 编写一个将输入复制到输出的程序 ,并将其中连续的多个空格用一个空格代替 运行环境vs2015 #includ
- Linux系统启动流程
- NYOJ-755山谷【模拟】
- 大数相加(顺序表中)
- php执行系统命令
- Hibernate 映射关系 ---One2Many单向关联
- 【poj2459】Feed Accounting