题目来源于力扣(LeetCode)
一、题目
题目相关标签:数组
提示:
1 <= heights.length <= 100
1 <= heights[i] <= 100
二、解题思路
-
分析题意得到:结果即 heights 数组排序前与排序后不相同元素的个数
-
因数组的引用类型,所以通过
Arrays.copy
方法来对 heights 数组进行复制的操作 -
对排序后的复制数组进行遍历,并与 heights 数组元素进行比较
-
不同的元素个数即是返回的结果
三、代码实现
public static int heightChecker(int[] heights) {
int ans = 0;
// 复制数组
int[] arr = Arrays.copyOf(heights, heights.length);
// 升序排列
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
// 记录两个数组中的不同项
if (arr[i] != heights[i]) {
ans += 1;
}
}
return ans;
}
四、执行用时
五、部分测试用例
public static void main(String[] args) {
int[] heights = {1, 1, 4, 2, 1, 3}; // output:3
// int[] heights = {5, 1, 2, 3, 4}; // output:5
// int[] heights = {1, 2, 3, 4, 5}; // output:0
int result = heightChecker(heights);
System.out.println(result);
}