5/30/2014

30. Sort Colors

public class Solution {
    public void sortColors(int[] A) {
        int head = 0;
        int back = A.length - 1;
       
        for (int i=0; i<A.length; ) {
            if (i>back || i<head) break;
            switch (A[i]) {
                case 1:
                    i++;
                    break;
                case 0:
                    swap(A, i, head);
                    i++;
                    head++;
                    break;
                case 2:
                    swap(A, i, back);
                    back--;
                    break;
            }
        }
    }
   
    public void swap(int[] A, int i, int j) {
        int temp = A[i];
        A[i] = A[j];
        A[j] = temp;
    }
}

1 条评论:

  1. 1. Two pointers.
    2. 如果0,和head换
    如果1,继续
    如果2,和back换

    回复删除