解題思路
排列組合經典題。
想像每一次都從現有的 nums 拿一個走,接著繼續再從剩的在選一個,重複這個動作直到所有的都被選過為止。
程式碼
class Solution {
public:
void helper(vector<int>& nums, vector<vector<int>>& ans, vector<int> comb, vector<bool> isUsed)
{
if(comb.size() == nums.size())
{
ans.push_back(comb);
return;
}
for(int i=0; i<nums.size(); i++)
{
if(isUsed[i]) continue;
comb.push_back(nums[i]);
isUsed[i] = true;
helper(nums, ans, comb, isUsed);
comb.pop_back();
isUsed[i] = false;
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> ans;
vector<int> comb;
vector<bool> isUsed(nums.size(), false);
helper(nums, ans, comb, isUsed);
return ans;
}
};
沒有留言:
張貼留言