47. Permutations II
来源:互联网 发布:手机淘宝群网页版 编辑:程序博客网 时间:2024/06/16 02:45
/*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]]思路: 按照寻找下一序列的思路,先升序排序,然后依次找出逐渐增大的组合序列。类似DFS,深度优先遍历,先固定第一个元素,然后排列n-1个元素,采用递归方法(注意跳过重复的排列)。采用交换的方法来排列组合。*/#include <stdio.h>#include <iostream>#include <string>#include <sstream>#include <vector>#include <algorithm>using namespace std;class Solution {public: vector<vector<int>> permute2(vector<int>& nums) { vector<vector<int> >res;sort(nums.begin(),nums.end());//升序dfs2(res,nums,0);return res; }private: //nums 通过引用形式,,每次交换完元素后才交换回去,保证局部递增void dfs2(vector<vector<int> > &res,vector<int> &nums,int begin){if(begin==nums.size()-1){res.push_back(nums);return;}for(int i=begin;i<nums.size();i++)//寻找下一个递增序列组合{if(i!=begin && nums[i]==nums[begin]) continue;//跳过重复值swap(nums[begin],nums[i]);dfs2(res,nums,begin+1);swap(nums[begin],nums[i]);}} //不通过引用形式void dfs(vector<vector<int> > &res,vector<int> nums,int begin){if(begin==nums.size()-1){res.push_back(nums);return;}for(int i=begin;i<nums.size();i++)//寻找下一个递增序列组合{if(i!=begin && nums[i]==nums[begin]) continue;//跳过重复值swap(nums[begin],nums[i]);dfs2(res,nums,begin+1);}}};int main(){ Solution mys;vector<std::vector<int> > res;vector<int> nums={1,2,3};res=mys.permute2(nums);for(int i=0;i<res.size();i++){ for(int j=0;j<res[i].size();j++) cout<<res[i][j];cout<<endl;} return 0;}
阅读全文
0 0
- 46. Permutations && 47. Permutations II
- 46. Permutations, 47. Permutations II
- [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
- Leetcode 47. Permutations II
- 47. Permutations II
- 日本穷游攻略(2、行程篇)
- XAMPP启动MySQL时报端口被占用错误
- 界面系统运行界面03--java
- 了解Sql Server的执行计划
- 监听器
- 47. Permutations II
- 第三章 授权(一)访问控制
- MySQL知识杂记
- Vue-深入
- React Native在Ubuntu16下开发,环境安装期间遇到的问题
- vector 邻接表的建立
- 开启第一个krpano全景漫游网站
- MySQL性能优化
- 使用工具类完成JDBC