LeetCode 题解:1051. 高度检查器,JavaScript,先排序再比较,详细注释
原题链接:https://leetcode-cn.com/problems/height-checker/
解题思路:
先明确题意,该题实际上是问,如果有一个未排序的数组,将其进行由低到高排序,前后最少需要移动多少个数字。
关键就是在于理解“最少需要移动多少个数字”,也就是说,排序前后数组的元素有多少个不同,那么最少也要移动这几个数字,才能达到排序的结果。
因此实现步骤诶,先对数组进行排序,然后将排序好的数组和原数组进行比较,统计值不同的元素个数即可。
```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;
};
```
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/3f1d6faa46812153a47cf9060】。文章转载请联系作者。
评论