1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| vector<vector<int>> permute(vector<int>& nums) { if (nums.size() == 0) return {}; else if (nums.size() == 1) return {{nums[0]}}; vector<vector<int>> res; vector<int> pre; permute(res, nums, pre, 0); return res; } void permute(vector<vector<int>> &res, vector<int> &nums, vector<int> &pre, int index) { if (index == nums.size()) { res.push_back(pre); return; } pre.push_back(nums[index]); permute(res, nums, pre, index + 1); for(int i = index + 1;i < nums.size(); i++) { swap(nums[index], nums[i]); pre[index] = nums[index]; permute(res, nums, pre, index + 1); swap(nums[index], nums[i]); } pre.pop_back(); }
|