题目描述:
学校在拍年度纪念照时,一般要求学生按照 非递减 的高度顺序排列。
请你返回至少有多少个学生没有站在正确位置数量。该人数指的是:能让所有学生以 非递减 高度排列的必要移动人数。
示例:
输入:[1,1,4,2,1,3] 输出:3 解释: 高度为 4、3 和最后一个 1 的学生,没有站在正确的位置。
提示:
1 <= heights.length <= 100
1 <= heights[i] <= 100
解题思路:
创建一个新数组,将原来的数组中的元素拷贝到新数组中。
对新创建的数组中的元素进行排序。
遍历两个数组,比较相同位置上的元素,不同元素的个数即为需要移动元素的个数。
class Solution {
public int heightChecker(int[] heights) {
int[] arrays = Arrays.copyOf(heights, heights.length);
Arrays.sort(arrays);
int count = 0;
for (int i=0; i<heights.length; i++) {
if (arrays[i] != heights[i]) {
count++;
}
}
return count;
}
}
总结:数组的拷贝,数组的排序是必须要掌握的东西。