首页 > 其他 > 详细

75. 颜色分类

时间:2021-06-12 15:30:13      阅读:25      评论:0      收藏:0      [点我收藏+]

学习交换元素的另一种写法

void swap(int[] nums,int x,int y){
        if(x==y)return;//重要,没有这一句当x==y时两个都变成0
        nums[x]=nums[x]^nums[y];
        nums[y]=nums[x]^nums[y];
        nums[x]=nums[x]^nums[y];
    }

本题解:
小于2的放在[0,pos2]的位置
在上面基础上,小于1的放在[0,pos1]的位置
也可以说:
小于2的放在(pos1,pos2]的位置

class Solution {
    public void sortColors(int[] nums) {
        
        int pos2=-1;
        int pos1=-1;
        for(int i=0;i<nums.length;i++){
              if(nums[i]<2){
                  pos2++;
                  swap(nums,pos2,i);
                  if(nums[pos2]<1){
                      pos1++;
                      swap(nums,pos2,pos1);
                  }
              }
        }

    }
    void swap(int[] nums,int x,int y){
        if(x==y)return;//重要,没有这一句两个都变成0
        nums[x]=nums[x]^nums[y];
        nums[y]=nums[x]^nums[y];
        nums[x]=nums[x]^nums[y];
    }
}

75. 颜色分类

原文:https://www.cnblogs.com/wsshub/p/14878288.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!