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高度检查器哈希表对比的资料请关注脚本之家其它相关文章!

相关文章

  • UMD的包导出TS 类型方法示例

    UMD的包导出TS 类型方法示例

    这篇文章主要为大家介绍了UMD的包导出TS 类型方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 一文解析Express框架view对象使用

    一文解析Express框架view对象使用

    这篇文章主要介绍了Express框架view对象使用解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 本地搭建微信小程序服务器的实现方法

    本地搭建微信小程序服务器的实现方法

    这篇文章主要介绍了本地搭建微信小程序服务器的实现方法的相关资料,希望通过本文能帮助到大家,让大家轻松的搭建自己的微信小程序的服务器,需要的朋友可以参考下
    2017-10-10
  • umi插件开发仿dumi项目实现基础路由解析

    umi插件开发仿dumi项目实现基础路由解析

    这篇文章主要为大家介绍了umi插件开发仿dumi项目实现基础路由解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 微信小程序实现页面跳转传值的方法

    微信小程序实现页面跳转传值的方法

    这篇文章主要介绍了微信小程序实现页面跳转传值的方法的相关资料,希望通过本文能帮助到大家,让大家实现这样的功能,需要的朋友可以参考下
    2017-10-10
  • THREE.js添加多个castShadow光源报错解决及原因分析

    THREE.js添加多个castShadow光源报错解决及原因分析

    这篇文章主要介绍了THREE.js添加多个castShadow的光源报错解决及原因分析
    2023-06-06
  • CheckBox 如何实现全选?

    CheckBox 如何实现全选?

    CheckBox 如何实现全选?...
    2006-06-06
  • JavaScript高级之自定义异常

    JavaScript高级之自定义异常

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

    自行实现Promise.allSettled的Polyfill处理

    这篇文章主要为大家介绍了自行实现Promise.allSettled 的 Polyfill处理示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 浏览器切换到其他标签页或最小化js定时器是否准时测试

    浏览器切换到其他标签页或最小化js定时器是否准时测试

    这篇文章主要为大家介绍了浏览器切换到其他标签页或最小化是js定时器是否准时的测试详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07

最新评论