46. Permutations
来源:互联网 发布:制作合格证的软件 编辑:程序博客网 时间:2024/06/07 22:21
第一种方法类似31题的Next Permutation,只不过是把所有情况都输出来
class Solution {public: vector<vector<int> > permute(vector<int>& nums) { sort(nums.begin(),nums.end()); vector<vector<int> >result; result.push_back(nums); int i,j; while(1) { for(i=nums.size()-1;i>0;i--) { if(nums[i]>nums[i-1]) break; } if(i==0) break; for(j=nums.size()-1;j>=i;j--) { if(nums[j]>nums[i-1]) { swap(nums[j],nums[i-1]); break; } } reverse(nums.begin()+i,nums.end()); result.push_back(nums); } return result; }};
第二种方法,使用C++自带的next_permutation函数
class Solution {public: vector<vector<int> > permute(vector<int>& nums) { vector<vector<int> > ret; if (nums.empty()) return ret; sort(nums.begin(), nums.end()); ret.push_back(nums); while (next_permutation(nums.begin(), nums.end())) ret.push_back(nums); return ret; }};
第三种方法:典型的回溯
class Solution {public: vector<vector<int> > permute(vector<int>& nums) { vector<vector<int> > ret; vector<int> tmp; DFS(nums,tmp,ret,0); return ret; } void DFS(vector<int>& nums,vector<int>& temp,vector<vector<int> >&result,int count) { if(count==nums.size()) result.push_back(temp); int i; for(i=0;i<nums.size();i++) { if(find(temp.begin(),temp.end(),nums[i])==temp.end()) { temp.push_back(nums[i]); DFS(nums,temp,result,count+1); temp.pop_back(); } } }};
第四种方法:也是回溯
class Solution {public: vector<vector<int> > permute(vector<int>& nums) { vector<vector<int> > ret; backtack(ret, nums, 0); return ret; } void backtack(vector<vector<int> > &ret, vector<int> &nums, int index) { if (index == nums.size()) { ret.push_back(nums); } else { for (int i = index; i < nums.size(); i ++) { swap(nums[index], nums[i]); backtack(ret, nums, index + 1); swap(nums[index], nums[i]); } } }};
0 0
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 46. Permutations
- 第一行代码阅读推荐
- 区间DP-hdu5115-Dire Wolf
- WEB渗透测试之踩点
- css入门基础
- hive2.1的安装配置
- 46. Permutations
- 收藏的源码下载地址
- MacOS VMWare Fusion中安装Ghost 系统
- Codeforces 672 E:Ultimate Weirdness of an Array 线段树 ★ ★ ★
- 设计模式之原型模式
- 时间戳转化为时间
- POJ 3538 Domestic Networks(DP)
- 屏幕单位转换dp、px、sp
- (细节题)[LeetCode]Remove Element