本文共 710 字,大约阅读时间需要 2 分钟。
思路:从左开始查看,找到非0数,标记,从右开始查看,查看到0,标记,交换,然后从左标记开始继续,以此类推,可使得所有的0集中在数组的左端,同理可得答案。
public class Solution { public void sortColors(int[] nums) { int t=0; int b=0; int e=nums.length-1; boolean flag=true; for (int i = 0; i < nums.length; i++) { if (flag) { if (nums[b]!=0) { t=b; flag=false; }else { t++; } b++; }else { if (nums[e]==0) { nums[e]=nums[t]; nums[t]=0; flag=true; t++; } e--; } } b=t; e=nums.length-1; flag=true; for (int i = t; i < nums.length; i++) { if (flag) { if (nums[b]!=1) { t=b; flag=false; } b++; }else { if (nums[e]==1) { nums[e]=nums[t]; nums[t]=1; flag=true; } e--; } } }}
转载地址:http://dushb.baihongyu.com/