• 75. 颜色分类


     1// 整数 0、 1 和 2 分别表示红色、白色和蓝色
    2/**
    3 * @param {number[]} nums
    4 * @return {void} Do not return anything, modify nums in-place instead.
    5 */

    6var sortColors = function(nums{
    7    let red = 0, white = 0, blue = 0;
    8    nums.forEach(el => {
    9        if(el === 0) {
    10            red++
    11        } else if(el === 1) {
    12            white++
    13        } else {
    14            blue++
    15        }
    16    });
    17
    18    for (let i = 0, l = nums.length; i < l; i++) {
    19        if(i < red) {
    20            nums[i] = 0;
    21        } else if (i < red + white) {
    22            nums[i] = 1;
    23        } else {
    24            nums[i] = 2;
    25        }
    26    }
    27
    28    return nums;
    29};
    30
    31// 0,1,2 排序。一次遍历,如果是0,则移动到表头,如果是2,则移动到表尾,不用考虑1
    32let sortColors1 = function(nums{
    33    for (let i = 0, j = 0, k = nums.length - 1; i <= k; i++) {
    34        if (nums[i] === 0) {
    35            [nums[i], nums[j++]] = [nums[j], nums[i]];
    36        } else if (nums[i] === 2) {
    37            [nums[k--], nums[i--]] = [nums[i], nums[k]];
    38        }
    39    }
    40};
    41
    42// 不需要额外空间
    43var sortColors2 = function(nums{
    44    for(var i=0, l = nums.length; i < l; i++) {
    45        if(nums[i] === 0) {
    46            nums.splice(i,1);
    47            nums.unshift(0);
    48        } else if(nums[i] === 2) {
    49            nums.splice(i,1);
    50            nums.push(2);
    51            l--;
    52            i--;
    53        }
    54    }
    55
    56    return nums;
    57};
    58
    59ensureEqual(sortColors([2,0,2,1,1,0]), [0,0,1,1,2,2], 'test 1');
  • 相关阅读:
    1
    vim配置
    pyspark
    添加底部小火箭+目录
    00
    博客园代码高亮设置
    01. 枚举类型
    01. 授权问题
    Android Studio打包签名全过程
    linux 阿里云源地址
  • 原文地址:https://www.cnblogs.com/rencoo/p/10137982.html
Copyright © 2020-2023  润新知