47. Permutations II(unsolved)
来源:互联网 发布:nginx 如何装tomcat 编辑:程序博客网 时间:2024/05/22 07:52
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],
[2,1,1]
]
class Solution {public: vector<vector<int>> permuteUnique(vector<int> nums) { vector<vector<int>> result; vector<int> res; sort(nums.begin(),nums.end()); perm(nums,result,0,nums.size()); return result; } void perm(vector<int> nums, vector<vector<int>>& result,int stage,int target) { if(stage==target-1) { result.push_back(nums); return ; } for(int i=stage;i<target;i++) { swap(nums[i],nums[stage]); if(nums[i]!=nums[stage]||i==stage) perm(nums,result,stage+1,target); } }};
二刷时,想用类似permutation1 的做法,所以就这样做,注意用set可以保证不会重复,所以是个简单的方法。
class Solution {public: set<vector<int>> result; vector<vector<int>> permuteUnique(vector<int>& nums) { if(nums.empty()) return vector<vector<int>>(result.begin(),result.end()); //sort(nums.begin(),nums.end());//用set不用会重复的问题,所以不用sort了 solve(nums,0,nums.size()); return vector<vector<int>>(result.begin(),result.end()); } void solve(vector<int> nums,int begin,int end) { if(begin>=end) { result.insert(nums); } for(int i=begin;i<end;i++) { if(i!=begin&&nums[i]==nums[begin])//这句话其实只是省时间,不用他一样可以ac,因为用了set continue; swap(nums[begin],nums[i]); solve(nums,begin+1,end); swap(nums[begin],nums[i]); } }};
下面是permutation1 的做法,所解决的问题是没有重复的数字的。可以看到非常相似。
class Solution {public: vector<vector<int>> result; vector<vector<int>> permute(vector<int>& nums) { if(nums.empty()) return result; solve(nums,0,nums.size()); return result; } void solve(vector<int> nums,int begin,int end){ if(begin==end) { result.push_back(nums); return ; } for(int i=begin;i<end;i++) { swap(nums[begin],nums[i]); solve(nums,begin+1,end); swap(nums[begin],nums[i]); } }};
0 0
- 47. Permutations II(unsolved)
- 46. Permutations && 47. Permutations II
- 46. Permutations, 47. Permutations II
- 46. Permutations(unsolved)
- [LeetCode]47.Permutations II
- LeetCode 47.Permutations II
- LeetCode --- 47. Permutations II
- [Leetcode] 47. Permutations II
- [leetcode] 47.Permutations II
- 47.Permutations II
- 47. Permutations II
- LeetCode 47. Permutations II
- 47. Permutations II
- 47. Permutations II LeetCode
- 47. Permutations II
- 47. Permutations II
- 47. Permutations II
- 47. Permutations II
- 管理后台的登录功能-重新思考
- C_1__C语言的关键字
- 计蒜客三值排序
- FLV学习(五)FlvParser源码阅读(3)解析FLV头部
- 415. Add Strings
- 47. Permutations II(unsolved)
- 微信小程序 获取openid客户端
- 算法提高 概率计算
- web前端---居中方式
- Java集合类框架学习 2 —— ArrayList(JDK1.8/JDK1.7/JDK1.6)
- .net core 使用Swagger
- SqlServer常用日期函数
- 自己动手搭建苹果推送Push服务器
- 让个人域名下GithubPage完美支持https