LeetCode: 46. Permutations
题目描述
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],
[3,2,1]
]
题目大意就是让我们把给定数组的所有数字全排列列举出来。
解题思路
直接暴力搜索就 OK。
AC代码
class Solution {
public:
void permute(vector<vector<int>>& ans, vector<int>& nums, vector<int>& now)
{
if(now.size() == nums.size())
{
ans.push_back(now);
return;
}
for(int i = 0; i < nums.size(); ++i)
{
if(nums[i] != INT_MAX)
{
// 用过的数字标记为INT_MAX
now.push_back(nums[i]);
nums[i] = INT_MAX;
permute(ans, nums, now);
// 取消标记
nums[i] = now.back();
now.pop_back();
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> ans;
vector<int> now;
permute(ans, nums, now);
return ans;
}
};