题目地址:https://leetcode-cn.com/problems/height-checker/
思路:将乱序数组排序后,遍历对比两数组有多少处不同
代码:
/** * @param {number[]} heights * @return {number} */ var heightChecker = function(heights) { let sortArr = heights.slice(0,heights.length); let number = 0; sortArr.sort(function(a, b) {return a - b}); for(let i = 0; i < heights.length; i++){ if(heights[i] !== sortArr[i] ){ number++; } } return number; };
收获:
arrayObject.slice(start,end):start:必需。 规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。end:可选。 规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。 如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。 如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。返回值:该方法并不会修改原数组,而是返回一个子数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
arrayObject.sort(sortby):sortby:可选。 规定排序顺序。必须是函数。 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。返回值:对数组的引用。请注意,数组在原数组上进行排序,不生成副本。