代码改变世界

leetcode - Sort Colors

2013-11-02 20:28  张汉生  阅读(155)  评论(0)    收藏  举报

 

 1 class Solution {
 2 public:
 3     void sortColors(int A[], int n) {
 4         // IMPORTANT: Please reset any member data you declared, as
 5         // the same Solution instance will be reused for each test case.
 6         int i =0 ,j = n-1;
 7         while (i<n && A[i]==0)
 8             i++;
 9         while (j>=0 && A[j]==2)
10             j--;
11         int tmp;
12         for (int k=i; k<=j; k++){
13             if (A[k]==0){
14                 A[k]= A[i];
15                 A[i] = 0;
16                 while (i<n && A[i]==0)
17                     i++;
18                 k = i-1;
19                 continue;
20             }
21             if (A[k]==2){
22                 A[k] = A[j];
23                 A[j] = 2;
24                 while (j>=0 && A[j]==2)
25                     j--;
26                 k--;
27                 continue;
28             }
29         }
30         return;
31     }
32 };