75. 颜色分类

129 阅读1分钟
  1. 颜色分类 leetcode-cn.com/problems/so… 思路:3指针 l,r,index 按照index遍历,遇到2和r交换,遇到0和l交换,遇到1index++
 public void sortColors(int[] nums) {
		  	int index = 0;
		  	int l = 0;
		  	int r = nums.length-1;
		  	while(index<=r) {
		  		int num = nums[index];
		  		if(num==2) {
              //遇到2和r交换
		  			swap(nums,index,r--);
		  		}else if(num==1) {
            //遇到1index++
		  			index++;
		  		}else {
//遇到0和l交换
		  			swap(nums,index++,l++);
		  		}
		  	}
	    }
	  public void swap(int[] nums,int i,int j) {
		  int tmp = nums[i];
		  nums[i]=nums[j];
		  nums[j]=tmp;
	  }

空间复杂度O(1),时间复杂度O(n)