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

消耗时间和内存情况:

相关推荐
ECT-OS-JiuHuaShan2 分钟前
科学的本来意义,是基于规范的共识逻辑,而非共识方法
人工智能·科技·学习·算法·生活
web_小码农6 分钟前
CSS 3D动画 旋转木马示例(带弧度支持手动拖动)
javascript·css·3d
木子墨5167 分钟前
LeetCode 热题 100 精讲 | 动态规划进阶篇:最大子数组和 · 分割等和子集 · 最长公共子序列 · 打家劫舍 III
数据结构·c++·算法·leetcode·动态规划·力扣
Armouy8 分钟前
Electron:核心概念、性能优化与兼容问题
前端·javascript·electron
F2E_Zhangmo10 分钟前
react native如何发送蓝牙命令
javascript·react native·react.js
li16709027013 分钟前
第十章:list
c语言·开发语言·数据结构·c++·算法·list·visual studio
博主花神14 分钟前
【TypeScript】梳理
javascript·ubuntu·typescript
淡笑沐白18 分钟前
ECharts入门指南:数据可视化实战
前端·javascript·echarts
Z1Jxxx20 分钟前
C++ P1150 Peter 的烟
数据结构·c++·算法
非科班Java出身GISer24 分钟前
ArcGIS JS 基础教程(1):地图初始化(含AMD/ESM两种引入方式)
javascript·arcgis·arcgis js·arcgis js 初始化·arcgis js 地图初始化