leetcode-75. 颜色分类]

75. 颜色分类

  • 荷兰国旗问题,直接分成三部分[0区,1区,2区]

    0区最右边为less指针,开始在0的左边 -1

    2区最左边为more指针,开始在数组最后一个数的右边 nums.length

    index为指针,当index没有超过more区的时候可以进行循环

    • nums[index] == 1,跳过index++

    • nums[index] == 0,就把0区下一位和当前index的数交换,index++

    • nums[index] ==2,就把2区的前一位和当前的index交换,当前index所在的数是2区前一位的数字,还没有进行比较,所以不用index++

public void sortColors(int[] nums) {
int less = -1;
int more = nums.length;
int index = 0;
while(index < more){
if(nums[index] == 1){
index++;
}else if(nums[index] == 0){
swap(nums, index++, ++less);
}else{
swap(nums, index, --more);
}
}
}
public void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}

 

posted on   老菜农  阅读(12)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

导航

统计信息

点击右上角即可分享
微信分享提示