leetcode - Permutations
2013-10-27 10:21 张汉生 阅读(162) 评论(0) 编辑 收藏 举报
1 class Solution { 2 public: 3 vector<vector<int> > permute(vector<int> &num) { 4 // Note: The Solution object is instantiated only once and is reused by each test case. 5 sort(num.begin(),num.end()); 6 vector<vector<int>> rlt; 7 rlt.push_back(num); 8 int n = num.size(); 9 while (true){ 10 int i; 11 for (i=n-2; i>=0; i--){ 12 if (num[i]<num[i+1]) 13 break; 14 } 15 if (i<0) 16 break; 17 int min = num[i+1]; 18 int minIndex = i+1; 19 for (int j =i+1+1; j<n; j++){ 20 if (num[j]>num[i] && num[j]<min){ 21 min = num[j]; 22 minIndex = j; 23 } 24 } 25 int tmp = num[i]; 26 num[i] = num[minIndex]; 27 num[minIndex] = tmp; 28 sort(&num[i+1], &num[n]); 29 rlt.push_back(num); 30 } 31 return rlt; 32 } 33 };