解题思路:
将原数组进行排序,将排序后的数组与排序前的数组在相同的索引处进行比较,值不同则计数器加1,最终将计数器返回。
代码实现如下:
class Solution {
public int heightChecker(int[] heights) {
int len=heights.length;
int[] sortArr=Arrays.copyOf(heights,len);
Arrays.sort(sortArr);
int res=0;
for(int i=0;i<len;++i){
if(sortArr[i]!=heights[i]){
res++;
}
}
return res;
}
}
解题思路:
1.遍历数组,计数每一个元素,并存入新数组arr
2.新数组中的元素会自动排序
3.遍历新数组和原数组,对比两个数组的元素,不同则计数器加1
代码实现如下:
class Solution {
public int heightChecker(int[] heights) {
int len=heights.length;
int[] arr=new int[101];
for(int i=0;i<len;++i){
//计算heights中相同元素的个数
//计数后的个数存到数组中
//数组自动排序
arr[heights[i]]++;
}
int res=0;
int j=0;
for(int i=1;i<arr.length;++i){//遍历计数数组
while(arr[i]-->0){//arr[i]表示heights中的元素
if(heights[j++]!=i){
res++;
}
}
}
return res;
}
}