leetcode---Permutations
2016-05-26 21:58
375 查看
Given a collection of distinct numbers, return all possible permutations.
For example,
[1,2,3] have the following permutations:
[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1].
方法1:
方法2:
For example,
[1,2,3] have the following permutations:
[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1].
方法1:
class Solution { public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> ans; sort(nums.begin(), nums.end()); int n = nums.size(); do { vector<int> tmp; for(int i=0; i<n; i++) tmp.push_back(nums[i]); ans.push_back(tmp); }while(next_permutation(nums.begin(), nums.end())); return ans; } };
方法2:
class Solution { public: vector<vector<int>> ans; vector<int> tmp; void dfs(int depth, vector<int>& nums) { if(depth >= nums.size()-1) { tmp.clear(); for(int i=0; i<nums.size(); i++) tmp.push_back(nums[i]); ans.push_back(tmp); return; } for(int i=depth; i<nums.size(); i++) { swap(nums[depth], nums[i]); dfs(depth+1, nums); swap(nums[depth], nums[i]); } } vector<vector<int>> permute(vector<int>& nums) { dfs(0, nums); return ans; } };
相关文章推荐
- 考研复习第三天-线性代数-矩阵运算
- URL如何编码与解码
- nand flash 坏块
- WM_LBUTTONDOW实现地图不断往鼠标方向移动位置
- bzoj4197 [Noi2015]寿司晚宴
- Android平台Stagefright中增加flv/f4v支持及相关原理介绍
- hello_world!【1】
- hello_world!【1】
- UML边看边记 之 类(一)
- MFC 删除提示框
- Hive的执行生命周期
- C++中vector的使用
- C++中vector的使用
- 阿里云centos和本地windows实现git代码管理(github仓储)
- 如何修改MFC中的系统菜单的图标?
- C++快速入门-标准输入输出
- 基于ant对scala工程进行编译 发布jar包
- 2.x的版本hive的api调用增加,删除,添加数据
- 使用ZXing实现二维码的扫描和生成带logo的二维码
- 判断元素是否含有某个Class值(正则法)移除、添加class