题意:
给出n个元素,请产生出所有的全排列。
思路:
注意到可能会有相同的排列出现,比如 {2,2}。还有可能是乱序列(大部分情况下都是无所谓的)。
递归法:
1 class Solution { 2 public: 3 void recursion(vector<int> num, int i, vector<vector<int> > &res) 4 { 5 if (i+1==num.size()) res.push_back(num); 6 else 7 { 8 for (int j=i; j<num.size(); j++) 9 { 10 if(j!=i&&num[i]==num[j]) continue; 11 swap(num[i], num[j]); 12 recursion(num, i+1, res); 13 } 14 } 15 } 16 vector<vector<int> > permute(vector<int> &num) 17 { 18 vector<vector<int> >res; 19 recursion(num, 0, res); 20 return res; 21 } 22 };
AC代码
迭代法:
时间: 2024-10-12 02:55:15