写点什么

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

用户头像
Lee Chen
关注
发布于: 2020 年 07 月 19 日

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



解题思路:



  1. 先明确题意,该题实际上是问,如果有一个未排序的数组,将其进行由低到高排序,前后最少需要移动多少个数字。

  2. 关键就是在于理解“最少需要移动多少个数字”,也就是说,排序前后数组的元素有多少个不同,那么最少也要移动这几个数字,才能达到排序的结果。

  3. 因此实现步骤诶,先对数组进行排序,然后将排序好的数组和原数组进行比较,统计值不同的元素个数即可。



```javascript []

/**

* @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;

};

```



发布于: 2020 年 07 月 19 日阅读数: 47
用户头像

Lee Chen

关注

还未添加个人签名 2018.08.29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode 题解:1051. 高度检查器,JavaScript,先排序再比较,详细注释