这一题的思路和剑指offer上字符串的全排列的思路一样,先固定一个元素,后面的所有元素依次和它交换(DFS+回朔)
<span style="font-family:Microsoft YaHei;font-size:14px;">class Solution {
public:
vector<vector<int> > permute(vector<int> &num) {
vector<vector<int> > res;
helper(num,0,res);
return res;
}
void helper(vector<int> &num,int index,vector<vector<int> > &res){
if(index == num.size()){
res.push_back(num);
return;
}
for(int i=index; i<num.size();i++){
swap(num[i],num[index]);
helper(num,index+1,res);
swap(num[index],num[i]);
}
}
};</span>
当然还有其他方法,明天补全