0
点赞
收藏
分享

微信扫一扫

颜色分类

笙烛 2021-09-21 阅读 54
今日算法
题目描述:
思路:

题目可以理解为:给定一个只包含元素0,1,2的乱序数组arr,对其进行正序排序

实现:
class Solution {
    public void sortColors(int[] nums) {
       int[] arr = new int[3];
       for (int i = 0; i < nums.length; i++) {
           arr[nums[i]]++;
       }
       for (int j = 0, i = 0; i < 3;) {
           if (arr[i] > 0) {
               nums[j++] = i;
               arr[i]--;
           } else {
               i++;
           }
       }
    }
}
实现:
class Solution {
    public void sortColors(int[] nums) {
        int i = 0, a = 0, b = nums.length - 1;
        while (i <= b) {
            if (nums[i] == 0) {
                if (i == a) {
                    i++;
                    a++;
                } else {
                    int temp = nums[a];
                    nums[a++] = nums[i];
                    nums[i] = temp;
                }
            } else if (nums[i] == 2) {
                int temp = nums[b];
                nums[b--] = nums[i];
                nums[i] = temp;
            } else {
               i++;
            }
        }
    }
}

越努力,越幸运

举报

相关推荐

0 条评论