标签:
这道题磨磨唧唧好久
维持两个pointer,一个指向最后一个0的下一位,一个指向最后一个1的下一位,然后如果碰到0,就把两个指针一起往后移一格,如果是1,就把指向1那个指针往后移一格。
1 public void sortColors(int[] nums) { 2 if(nums == null || nums.length == 0) { 3 return; 4 } 5 int index0 = 0; 6 int index1 = 0; 7 for(int i = 0; i < nums.length; i++) { 8 if(nums[i] == 0) { 9 nums[i] = 2; 10 nums[index1++] = 1; 11 nums[index0++] = 0; 12 } else if(nums[i] == 1) { 13 nums[i] = 2; 14 nums[index1++] = 1; 15 } 16 } 17 } 18 }
代码+思路依旧来自code ganker大神
ref:http://blog.csdn.net/linhuanmars/article/details/24286349
标签:
原文地址:http://www.cnblogs.com/warmland/p/5339760.html