美文网首页
75. 颜色分类

75. 颜色分类

作者: 名字是乱打的 | 来源:发表于2021-08-15 17:18 被阅读0次

思路:

  • 看到这样的按数字分类,第一时间感觉应该用排序,这样的话就直接按大小分好了。但是要求不用排序,且一遍扫描,就算了。
  • 第二种思路:
    基本思路:定义俩数字,0值的最右位置zero,以及2值最左位置tow
    使得,[0, zero] = 0, (zero, i) = 1,(two, len - 1] = 2,剩下的就是把数字按这个排了
  • 第三种思路:
    赋值法,假定所有数字都是2;然后对0和1数字进行计数和赋值;

代码2:

  class Solution {
        public void sortColors(int[] nums) {
            int len = nums.length;
            if (nums.length < 2) {
                return;
            }
            //按照0,1,2顺序排序
            int zero = -1;
            int two = len;
            int i = 0;
            while (i<two){
                if (nums[i]==0){
                    //之前的数字要么是0,要么是1,不会是2,因此不需要再考虑当前数字要不要再次交换问题,因此直接i++
                    swap(nums,++zero,i++);
                }else if (nums[i]==2){
                    //由于从后面交换到前面的数字,情况无法保证是否需要再次交换,因此需要再次遍历
                    swap(nums,--two,i);
                }else {
                    i++;
                }
            }
        }

        private void swap(int[] nums, int index1, int index2) {
            int temp = nums[index1];
            nums[index1] = nums[index2];
            nums[index2] = temp;
        }
    }

思路3代码:

 public void sortColors(int[] nums) {
            //0的数量,小于等于1的数量
            int count0=0,count1=0;
            for (int i = 0; i < nums.length; i++) {
                int curr=nums[i];
                nums[i]=2;
                if (curr<2){
                    nums[count1++]=1;
                }
                if (curr<1){
                    nums[count0++]=0;
                }
            }
        }

相关文章

  • 75.颜色分类

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

  • 75. 颜色分类

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

  • 75. 颜色分类

    【题目描述】 【示例】 【进阶】 代码实现【解1】 看看就行啦 ? 【解2】思路:1、使用三个指针来标识数组左边、...

  • 75. 颜色分类

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

  • 75.颜色分类

    原题 https://leetcode-cn.com/problems/sort-colors/ 解题思路 荷兰国...

  • 75.颜色分类

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

  • 75. 颜色分类

    【Description】给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的...

  • 75. 颜色分类

    我觉得这道题的解法应该属于双指针吧,我大概记录一下我理解的思路,就是一个指针zero指向-1,一个two指向数组的...

  • 75. 颜色分类

    75. 颜色分类 问题 给定一个包含红色、白色和蓝色,一共 个元素的数组,原地对它们进行排序,使得相同颜色的元素...

  • 75. 颜色分类

    解法

网友评论

      本文标题:75. 颜色分类

      本文链接:https://www.haomeiwen.com/subject/bamubltx.html