4/05/2014

Leetcode -- Next Permutation

class Solution {  
 public:  
   void nextPermutation(vector<int> &num) {  
     int n = num.size();  
     int i = n - 1;  
     bool found = false;  
     for(; i > 0; --i) {  
       if( num[i - 1] < num[i]) {  
         found = true;  
         break;  
       }  
     }  
     if(found) {  
        int j = i;  
       for(int k = j + 1; k < n; ++k) {  
         if(num[k] < num[j] && num[k] > num[i - 1] ) {  
           j = k;  
         }  
       }  
       int temp = num[i - 1];  
       num[i - 1] = num[j];  
       num[j] = temp;  
       sort(num.begin() + i, num.end());  
     } else {  
       sort(num.begin(), num.end());  
     }  
   }  
 };  

No comments: