您的位置:首页 > 其它

LeetCode *** 46. Permutations

2016-04-12 20:32 176 查看
题目:

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]
.

分析:

dfs搜索即可。

代码:

class Solution {
public:
vector<vector<int>> res;

vector<vector<int>> permute(vector<int>& nums) {
vector<int> tmp;
bool *mark=new bool[nums.size()];
for(int i=0;i<nums.size();++i)mark[i]=false;
dfs(tmp,nums,mark);
return res;
}

void dfs(vector<int>& tmp,vector<int>& nums,bool*& mark){
if(nums.size()==tmp.size()){
res.push_back(tmp);
return;
}

for(int i=0;i<nums.size();++i){
if(!mark[i]){
mark[i]=true;
tmp.push_back(nums[i]);
dfs(tmp,nums,mark);
tmp.erase(tmp.end()-1);
mark[i]=false;
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: