LeetCode 题解:1051. 高度检查器,JavaScript,先排序再比较,详细注释

原题链接:https://leetcode-cn.com/problems/height-checker/

解题思路:

  1. 先明确题意,该题实际上是问,如果有一个未排序的数组,将其进行由低到高排序,前后最少需要移动多少个数字。
  2. 关键就是在于理解“最少需要移动多少个数字”,也就是说,排序前后数组的元素有多少个不同,那么最少也要移动这几个数字,才能达到排序的结果。
  3. 因此实现步骤诶,先对数组进行排序,然后将排序好的数组和原数组进行比较,统计值不同的元素个数即可。
/**
 * @param {number[]} heights
 * @return {number}
 */
var heightChecker = function(heights) {
  // 先对高度进行排序
  const sortedHeights = [...heights].sort((a, b) => a - b);
  // 储存计数结果
  let result = 0;

  // 遍历高度数组
  heights.forEach((height, index) => {
    // 如果当前高度与排序好的高度不一致,则代表其位置需要进行调整,result加1
    if (height !== sortedHeights[index]) {
      result++;
    }
  });

  return result;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值