演算法3Sum

dongyu2013發表於2014-05-04
  1. class Solution {  
  2. public:  
  3.     vectorint> > threeSum(vector<int> &num) {  
  4.         // Start typing your C/C++ solution below  
  5.         // DO NOT write int main() function  
  6.         vectorint> > vec;  
  7.         if (num.size() 
  8.             return vec;  
  9.         sort(num.begin(), num.end());  
  10.         for (vector<int>::size_type i = 0; i 
  11.         {  
  12.             if (num[i] > 0)  
  13.                 break;  
  14.             int j = i + 1, k = num.size() - 1;  
  15.             while (j 
  16.             {  
  17.                 if (num[i] + num[j] > 0)  
  18.                     break;  
  19.                 if (num[j] + num[k] 
  20.                     ++j;  
  21.                 else if (num[j] + num[k] > -num[i])  
  22.                     --k;  
  23.                 else  
  24.                 {  
  25.                     vector<int> vec1;  
  26.                     vec1.push_back(num[i]);  
  27.                     vec1.push_back(num[j]);  
  28.                     vec1.push_back(num[k]);  
  29.                     vec.push_back(vec1);  
  30.                     //去重  
  31.                     while (j 
  32.                         ++j;  
  33.                     while (k > j && num[k] == num[k - 1])  
  34.                         --k;  
  35.                     ++j;  
  36.                     --k;  
  37.                 }  
  38.             }  
  39.             //去重  
  40.             while (i 
  41.                 ++i;  
  42.         }  
  43.         return vec;  
  44.     }  
  45. };  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29012686/viewspace-1153202/,如需轉載,請註明出處,否則將追究法律責任。

相關文章