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

消耗时间和内存情况:

相关推荐
BreezeJiang3 分钟前
从一棵树到一亿人:算法世界的"深搜"哲学
javascript
廖磊AI编程9 分钟前
AI 编程项目缺少 Bun 时,如何用 BVM 安装和验证运行时
javascript
MrZhao40017 分钟前
一个最小 Agent 是怎么跑起来的:Agent Loop 与工具使用全链路
算法
#麻辣小龙虾#20 分钟前
vue3基于leaflet.js实现地图编辑功能
javascript·ecmascript·leaflet.js
Keven_1124 分钟前
算法札记:二分
算法·二分
AHRIKNOW25 分钟前
写一个 Fetch 封装库,没那么简单
javascript
渣波28 分钟前
手把手教你写出优雅的 API 接口调用
前端·javascript
spmcor29 分钟前
JavaScript 日期限制的“三个月陷阱”:从边界溢出到稳健实现
javascript
半个落月29 分钟前
Ajax 异步编程全攻略:从 XHR 到 async/await
javascript
TCW112130 分钟前
AI底层系列:用C++实现线性代数的公式推导与算法设计-6.线性方程组的解集
c++·人工智能·算法