您的位置:首页 > 其它

LeetCode: Permutations

2012-10-08 14:26 120 查看
Given a collection of 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]
.

class Solution {
public:
void perm(vector<int> &num, vector<vector<int> >&result,
int nStart, int nEnd)
{
if (nStart < nEnd-1)
{
perm(num, result, nStart+1, nEnd);
for (int i = nStart + 1; i < nEnd; ++i)
{
int tmp = num[nStart];
num[nStart] = num[i];
num[i] = tmp;

perm(num, result, nStart+1, nEnd);

num[i] = num[nStart];
num[nStart] = tmp;
}
}
else
{
result.push_back(num);
}
}

vector<vector<int> > permute(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int> >result;
perm(num, result, 0, num.size());
return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: