代码改变世界

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 };