他這題是排列,不是組合,所以不是用 push/pop 的方式去寫,而是用 swap 去寫
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> ans;
backtracking(ans, nums, 0);
return ans;
}
void backtracking(vector<vector<int>> &ans, vector<int>& nums, int start){
// 終止條件
if(start==nums.size()){
ans.push_back(nums);
return;
}
for(int i=start;i<nums.size();i++){
swap(nums[i], nums[start]);
backtracking(ans, nums, start+1);
swap(nums[i], nums[start]);
}
}
};