題目
學校在拍年度紀念照時,一般要求學生按照 非遞減 的高度順序排列。
請你傳回能讓所有學生以 非遞減 高度排列的最小必要移動人數。
注意,當一組學生被選中時,他們之間可以以任何可能的方式重新排序,而未被選中的學生應該保持不動。
示例:
輸入:heights = [1,1,4,2,1,3]
輸出:3
解釋:
目前數組:[1,1,4,2,1,3]
目标數組:[1,1,1,2,3,4]
在下标 2 處(從 0 開始計數)出現 4 vs 1 ,是以我們必須移動這名學生。
在下标 4 處(從 0 開始計數)出現 1 vs 3 ,是以我們必須移動這名學生。
在下标 5 處(從 0 開始計數)出現 3 vs 4 ,是以我們必須移動這名學生。
示例 2:
輸入:heights = [5,1,2,3,4]
輸出:5
示例 3:
輸入:heights = [1,2,3,4,5]
輸出:0
提示:
1 <= heights.length <= 100
1 <= heights[i] <= 100
解題思路
class Solution:
def heightChecker(self, heights: [int]) -> int:
temList = sorted(heights)
ret = 0
for i in range(len(heights)):
#替換次數,其實就是每個原來位置不一樣的數值都要換一次,是以替換次數=同位置不同值的次數
if heights[i] != temList[i]:
ret += 1
return ret