颜色分类

此博客链接:

颜色分类

题目链接:https://leetcode-cn.com/problems/sort-colors/submissions/

题目

给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

示例 1:

输入:nums = [2,0,2,1,1,0]
输出:[0,0,1,1,2,2]
示例 2:

输入:nums = [2,0,1]
输出:[0,1,2]
示例 3:

输入:nums = [0]
输出:[0]
示例 4:

输入:nums = [1]
输出:[1]

题解

使用双指针,当判断左指针为0时,左指针不移动,当判断右指针为2时,不移动,当判断左指针为2,右指针为0时,交换左右指针的内容,

代码

class Solution {
    public void sortColors(int[] nums) {
        if(nums.length<2)
        {
            return;
        }
       int left=0;
       int right=nums.length-1;
       for(int i=0;i<nums.length;i++)
       {
           if(nums[left]==2&&nums[right]==0)
           {
               int temp=nums[left];
               nums[left]=nums[right];
               nums[right]=temp;
               left++;
               right--;
           }
           if(nums[left]==0)
           {
               left++;
           }
           if(nums[right]==2){
               right--;
           }
           if(nums[left]==2&&nums[right]==1)
           {
               int temp=nums[left];
               nums[left]=nums[right];
               nums[right]=temp;
               right--;
           }
           if(nums[left]==1&&nums[right]==0)
           {
               int temp=nums[left];
               nums[left]=nums[right];
               nums[right]=temp;
               left++;
           }

       }
    
    }
}

结果

 

 截图中代码说越界,我感觉没有越界,也不知道哪里越界了

出来混总是要还的
原文地址:https://www.cnblogs.com/ping2yingshi/p/15146325.html