学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。
排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。
给你一个整数数组 heights ,表示 当前学生站位 的高度情况。heights[i] 是这一行中第 i 位学生的高度(下标从 0 开始)。
返回满足 heights[i] != expected[i] 的 下标数量 。
计数排序-//www.greatytc.com/p/18fa96a1ca45
class Solution:
def heightChecker(self, heights: List[int]) -> int:
# s_heights = sorted(heights)
# num = 0
# for i in range(len(heights)):
# if heights[i] != s_heights[i]:
# num += 1
# return num
# 计数排序
max_h = max(heights)
counts = [0] * (max_h + 1)
for h in heights:
counts[h] += 1
# print(counts)
# 边遍历,边对比
num = 0
idx = 0 # 记录要对比的数组索引
for i in range(1, max_h+1):
while counts[i] > 0:
if heights[idx] != i:
num +=1
counts[i] -= 1
idx += 1
return num