LeetCode #46 - Permutations - Medium
来源:互联网 发布:win10美化成mac 编辑:程序博客网 时间:2024/05/02 17:59
Permutations Series
Permutations I: http://blog.csdn.net/Arcome/article/details/53758467
Permutations II:
Problem
Given a collection of distinct numbers, return all possible permutations.
Example
[1,2,3] have the following permutations:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]
Algorithm
整理一下题意: 给定一组整数,要求返回其所有全排列。经典的全排列问题。
参考上题Generate Parentheses的思路。
对于组合中的每个整数标记一个bool值,若已被选则为true,否则为false。对于所有整数遍历,若未被选中,则加入到临时向量中并标记该整数为已选,然后对新的临时向量和新的选择情况递归调用生成函数。对所有整数遍历后,若全部均已选,则临时向量即为一个满足题意的全排列,加入到结果向量中。
注意对于每个未被选的整数,在修改状态重新生成全排列后,需要对该整数重新标记为未被选,并从临时向量中除去。即只有在生成过程该整数才能被标记为已选,退出生成过程后需返回未选状态。
代码如下。
//用时23msclass Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<bool> pick(nums.size(),false); vector<int> temp; vector<vector<int>> result; generate(pick,temp,nums,result); return result; } void generate(vector<bool> pick, vector<int> temp,vector<int> nums, vector<vector<int>>&result) { bool pickall=true; for(int i=0;i<pick.size();i++){ if(pick[i]==false){ pickall=false; pick[i]=true; temp.push_back(nums[i]); generate(pick,temp,nums,result); pick[i]=false; temp.pop_back(); } } if(pickall){ result.push_back(temp); } }};
0 0
- LeetCode #46 - Permutations - Medium
- 【Leetcode-Medium-46】Permutations
- [Leetcode 46, Medium] Permutations I
- LeetCode-46-Permutations(DFS)-Medium
- LeetCode 46. Permutations (Medium)
- Leetcode 46. Permutations (Medium) (cpp)
- Leetcode OJ 46. Permutations [Medium]
- Medium 46题 Permutations
- LeetCode-47-Permutations II(DFS/剪枝)-Medium
- Leetcode 47. Permutations II (Medium) (cpp)
- LeetCode 46 Permutations + LeetCode 47 Permutations II
- LeetCode 46: Permutations
- leetcode 46 Permutations
- LeetCode 46 Permutations II
- LeetCode(46) Permutations
- [leetcode 46] Permutations
- Leetcode NO.46 Permutations
- leetcode || 46、Permutations
- LeetCode #216 - Combination Sum III - Medium
- (一) Angular.js入门学习和简介
- 2016年魅族Android面试题(回忆版)
- LeetCode #22 - Generate Parentheses - Medium
- Android中常见异常
- LeetCode #46 - Permutations - Medium
- Spring学习之旅(三) Spring MVC配置
- 04 随着libvirt开始和创建你的第一台虚拟机
- LeetCode #89 - Gray Code - Medium
- Struts2(一) 学习兴趣、框架简介、框架优缺点
- LeetCode #77 - Combinations - Medium
- 在名词前和在名词后意义有所不同的形容词
- 数学抽屉原理
- Leetdode Partition List