给定一个没有重复数字的序列,返回其所有可能的全排列。
示例:
输入: [1,2,3]
输出:
[
[1,2,3],
[1,3,2],
[2,1,3],
[2,3,1],
[3,1,2],
[3,2,1]
]
题目太简单,就要考虑写最少的代码。
思路就是依次用元素和i
class Solution { public: vector<vector<int>> permute(vector<int>& nums) { if(nums.size()==0) return {}; vector<vector<int>> re; vector<int> before; permute(nums,0,re,before); return re; } void permute(vector<int>& nums,int pos,vector<vector<int>>& result,vector<int>& before) { if(pos==nums.size()) { result.push_back(before); return; } for(int i=pos;i!=nums.size();++i) { swap(nums[pos],nums[i]); before.push_back(nums[pos]); permute(nums,pos+1,result,before); before.pop_back(); swap(nums[pos],nums[i]); } } };