天天看點

高度檢查器java高度檢查器(力扣)

高度檢查器(力扣)

題目

學校在拍年度紀念照時,一般要求學生按照 非遞減 的高度順序排列。

請你傳回至少有多少個學生沒有站在正确位置數量。該人數指的是:能讓所有學生以 非遞減 高度排列的必要移動人數。

示例:

輸入:[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[] arr =new int[101];//因為1 <= heights[i] <= 100;是以建立101個桶
    for(int height: heights){ arr[height]++;}
        //周遊數組heights,将一樣的數放在同一個桶内,并計算每個桶内有多少個元素
    int count = 0;
    for(int i=1,j=0; i<arr.length;i++){
       //i是桶中的元素的值,arr[i]是元素個數
        while(arr[i]-->0){//從桶裡取數
             if(heights[j++] != i){count++;}
             // 從桶中取出元素時,元素的排列順序就是非遞減的,然後與heights中的元素比較,如果不同,電腦就加1
           }
        }
     return count;
     }
   }