js题解LeetCode1051 高度检查器哈希表对比

 更新时间:2022年12月29日 09:09:34   作者:羊肉串  
这篇文章主要为大家介绍了JS题解LeetCode1051 高度检查器哈希表对比,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

解题思路

方法一,实际上我们并不需要给heights进行排序,我们需要的只是从前往后遍历heights,找到在当前位置上是不是应该出现的最小的数字,因此

我们创建一个数组,存储所有出现的数字的次数,由于题目已经限制 heights 长度最大为 100,直接创建 100 长度的数组通过下标保存计数器即可,如果不定长度或者长度较大就得通过 map 处理然后对 map 排序了

遍历heights,在数组中存储所有数字出现的次数,同时找到最小值作为数组判断的起点
再遍历一遍 heights,判断当前遍历项是否跟目标下标一致,如果不一致结果+1,一致就不用管了,然后把计数器-1,直到 0

如果当前下标的值为 0 了,就证明heights中出现的该下边的数字次数已经用光了,直接迭代找到下一个不为 0 的下标继续即可

方法二,比较简单,直接对heights排序,然后逐位对比即可

代码

/**
 * @param {number[]} heights
 * @return {number}
 */
var heightChecker = function (heights) {
  const arr = new Array(100).fill(0)
  let t = 0
  let idx = 101
  heights.forEach(item => {
    arr[item]++
    if (item < idx) idx = item
  })
  heights.forEach(item => {
    if (item !== idx) {
      t++
    }
    arr[idx]--
    while (arr[idx] === 0) {
      idx++
    }
  })
  return t
};
​​​​​​​var heightChecker = function (heights) {
  const h = JSON.parse(JSON.stringify(heights))
  const arr = heights.sort((a, b) => a - b)
  let t = 0
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] !== h[i]) t++
  }
  return t
};

以上就是js题解LeetCode1051 高度检查器哈希表对比的详细内容,更多关于js高度检查器哈希表对比的资料请关注脚本之家其它相关文章!

相关文章

  • Three.js实现雪糕地球的使用示例详解

    Three.js实现雪糕地球的使用示例详解

    这篇文章主要为大家介绍了Three.js实现雪糕地球的使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Qiankun原理详解JS沙箱是如何做隔离

    Qiankun原理详解JS沙箱是如何做隔离

    这篇文章主要为大家介绍了Qiankun原理详解JS沙箱是如何做隔离示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 微信小程序 (一)新建项目hello WeApp 详细介绍

    微信小程序 (一)新建项目hello WeApp 详细介绍

    这篇文章主要介绍了微信小程序 (一)hello WeApp 详细介绍的相关资料,需要的朋友可以参考下
    2016-09-09
  • Servlet3.0与纯javascript通过Ajax交互的实例详解

    Servlet3.0与纯javascript通过Ajax交互的实例详解

    Servlet与纯javascript通过Ajax交互,对于很多人来说应该很简单。不过还是写写,方便Ajax学习的后来者
    2018-03-03
  • JavaScript高级之自定义异常

    JavaScript高级之自定义异常

    在JavaScript中所有的异常都是Error对象,遇到异常就会抛出一个Error对象,这个对象中包含错误的描述信息,通过JavaScript提供的异常处理语句,我们可以用结构化的方式来捕捉发生的错误,让异常处理代码与核心业务代码实现分离,需要的朋友可以参考一下
    2021-12-12
  • JavaScript 定时器详情

    JavaScript 定时器详情

    这篇文章主要介绍了JavaScript 定时器,在JavaScript中定时器有两个 setInterval() 与 setTimeout() 分别还有取消定时器的方法,下面来看看文章的详细介绍
    2021-11-11
  • 微信小程序 wx.request(OBJECT)发起请求详解

    微信小程序 wx.request(OBJECT)发起请求详解

    这篇文章主要介绍了微信小程序 wx.request(OBJECT)发起请求详解的相关资料,需要的朋友可以参考下
    2016-10-10
  • 前端通过JavaScript创建修改CAD图形详情

    前端通过JavaScript创建修改CAD图形详情

    这篇文章介绍JavaScript创建修改CAD图形,创建修改CAD图形,一般是基于AutoCAD进行二次开发,ObjectARX是AutoDesk公司针对AutoCAD平台上的二次开发而推出的一个开发软件包,它提供了以C++为基础的面向对象的开发环境及应用程序接口,能真正快速的访问AutoCAD图形数据库
    2021-10-10
  • 微信小程序 Page()函数详解

    微信小程序 Page()函数详解

    这篇文章主要介绍了微信小程序 Page()函数详解的相关资料,在开发过程中肯定会遇到Page()函数,希望能帮助到大家,需要的朋友可以参考下
    2016-10-10
  • 微信小程序 网络请求(post请求,get请求)

    微信小程序 网络请求(post请求,get请求)

    这篇文章主要介绍了微信小程序 网络请求(post请求,get请求)的相关资料,需要的朋友可以参考下
    2017-01-01

最新评论