每日一题——LeetCode1051.高度检查器

方法一 sort排序:

创建一个元素和heights一模一样的expect数组 ,将expect数组从小到大进行排序,比较heights和expect相同位置不同的元素个数

javascript 复制代码
var heightChecker = function(heights) {
    var expect = [],count=0
    for(const n of heights){
        expect.push(n)
    }
    expect.sort((a,b)=>a-b)
    for(let i=0;i<heights.length;i++){
        if(heights[i]!=expect[i]) count++
    }
   return count
};

消耗时间和内存起情况:

方法二 计数排序

题目已经说明:1<= 数组长度 <=100,1<= 数组元素值 <=100,我们知道操作的次数不会很大。

为了方便操作,我们创建一个101 长度的数组,每遍历到一个数字,就把该数字当做一个索引,找到对应桶中那个索引的值,递增 1 即可。

javascript 复制代码
var heightChecker = function(heights) {
    let bucket = new Array(101).fill(0);
    for (let i of heights) {
        bucket[i]++;
    }
    let ans = 0;
    for (let i = 1, j = 0; i < bucket.length; i++) {
        while (bucket[i]-- > 0) {
            if (heights[j++] !== i) ans++;
        }
    }
    return ans;
};

消耗时间和内存情况:

相关推荐
A boy CDEF girl2 分钟前
算法题专栏:优选算法
数据结构·算法·leetcode
没落之王8 分钟前
三易五行看宋朝的三界确立
大数据·人工智能·算法
坤坤子吖43 分钟前
算法学习——单调队列
开发语言·c++·笔记·学习·算法
螺丝钉tina1 小时前
[Playwright] [02]常用命令与调试:Debug UI、Mode和 Trace Viewer
开发语言·javascript·测试工具·ui·自动化
开开心心就好2 小时前
竖式除法出题工具,整除余数混合模式
运维·服务器·前端·javascript·ocr·perl·1024程序员节
Js.Tx2 小时前
【具体数学 Concrete Mathematics】2.1.5 一般性的方法
算法·具体数学
এ慕ོ冬℘゜2 小时前
JS 事件循环、宏任务微任务:单线程底层原理 + 执行顺序
开发语言·javascript·ecmascript
web打印社区2 小时前
Lodop排障总纲-常见报错一张表
开发语言·前端·javascript·chrome·websocket
程序员大阳3 小时前
副队长JavaScript教程(56)-DOM之表单操作
javascript·dom·表单操作
Dxy12393102164 小时前
JS AES加密详解
开发语言·javascript·ecmascript