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

消耗时间和内存情况:

相关推荐
M--Y9 小时前
LangGraph 工作流模式
开发语言·javascript·python·langchain·大模型·llm·langgraph
forest_0910 小时前
多 Agent 协作第二课:交叉验证≠独立验证
人工智能·python·算法·机器学习·prompt·agi
纪念 22911 小时前
C++ 算法基础 (差分)
开发语言·c++·算法
文丑颜不良啊14 小时前
LeetCode2761~2780题目解析
java·leetcode
johnjincaaaa14 小时前
猿人学第 18 题「jsvmp 洞察先机」逆向通关实录
javascript·后端
jyOverQ14 小时前
从零学 JVM(六):垃圾回收算法详解——标记清除、标记复制与标记整理
jvm·算法
严肃小白兔16 小时前
第 06/24 期:神经网络的反向传播算法:从链式法则到梯度计算
人工智能·神经网络·算法
落羽的落羽16 小时前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习
FungLeo16 小时前
成为全栈·Vue 管理后台篇·分类树与标签管理:层级数据如何落到管理界面
前端·javascript·vue.js·分类树·naive ui·标签管理·前端数据结构