每日一题——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;
};

消耗时间和内存情况:

相关推荐
JustNow_Man5 小时前
【Harness】本地文本向量化搜索解决方案--qmd
git·python·算法
jaysee-sjc5 小时前
【苍穹外卖】Day10:定时任务与 WebSocket 实时提醒实战
java·开发语言·javascript·数据库·vue.js·websocket·网络协议
敲代码的苦135 小时前
头歌 数据结构—消防资源调度
数据结构·算法
布莱克6055 小时前
C++ 中 set 与 map 的区别详解
开发语言·c++·算法·哈希
lisw055 小时前
算法与软件的本质区别
驱动开发·算法·数学建模
我不会插花弄玉5 小时前
5.Hash 【由浅入深-redis】
redis·算法·哈希算法
Nuanyt5 小时前
LeetCode Hot 100 · 双指针 3 题 Java
java·笔记·算法·leetcode·双指针
尤水就下6 小时前
🔥说一说在线文档的 Block 架构是如何实现的
前端·javascript·架构
晓得迷路了6 小时前
栗子前端技术周刊第 151 期 - ViteConf 2026、React Router 8.5、React Native 0.88...
前端·javascript·vue.js
志起计算机编程6 小时前
Clickhouse的几个关键优势
算法