3616. 学生替换人数 🔒
题目描述
给定一个整数数组 ranks
,其中 ranks[i]
表示第 i
个 按顺序 到达的学生排名。数字越低表示排名 越好。
最初,默认 选中 第一个学生。
当一名排名 严格 更好的学生到来时,会发生 替换,并 取代 当前的选择。
返回替换的总数。
示例 1:
输入:ranks = [4,1,2]
输出:1
解释:
- 第一个
ranks[0] = 4
的学生最初被选中。 - 第二个学生
ranks[1] = 1
比当前选择更好,因此发生替换。 - 第三名学生排名更差,因此没有发生替换。
- 因此,替换的人数为 1。
示例 2:
输入:ranks = [2,2,3]
输出:0
解释:
- 第一个
ranks[0] = 2
的学生最初被选中。 - 两个
ranks[1] = 2
或ranks[2] = 3
都不如当前选择好。 - 因此,替换的人数为 0。
提示:
1 <= ranks.length <= 105
1 <= ranks[i] <= 105
解法
方法一:模拟
我们用一个变量 \(\text{cur}\) 来记录当前选中的学生的排名。遍历数组 \(\text{ranks}\),如果遇到一个排名更好的学生(即 \(\text{ranks}[i] < \text{cur}\)),则更新 \(\text{cur}\) 并将答案加一。
遍历结束后,返回答案即可。
时间复杂度 \(O(n)\),其中 \(n\) 是学生的数量。空间复杂度 \(O(1)\)。
1 2 3 4 5 6 7 8 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
1 2 3 4 5 6 7 8 9 10 |
|
1 2 3 4 5 6 7 8 9 10 |
|