1.问题
问题描述
小U在一款挂机游戏中拥有n个英雄。游戏中有一种历练升级机制,每天可以选择两个英雄进行历练,如果两位英雄的等级相同,则他们的等级都不会改变。如果英雄等级不同,那么等级较高的英雄会增加1级,而等级较低的英雄则保持不变。
小U希望至少有一个英雄能够达到2000000000000000级,他想知道有多少英雄有潜力通过历练达到这个等级。
测试样例
样例1:
输入:
n = 5 ,u = [1, 2, 3, 1, 2]输出:3
样例2:
输入:
n = 4 ,u = [100000, 100000, 100000, 100000]输出:0
样例3:
输入:
n = 6 ,u = [1, 1, 1, 2, 2, 2]输出:3
2.思路
这道题的本质不是达到2000000000000000级,而是选出一个等级最小的英雄,它可以让所有等级比它大的英雄升级
样例1:
输入:
n = 5 ,u = [1, 2, 3, 1, 2]输出:3
可以选出(1,2)(1,3)(1,2),通过一个1级英雄让三个等级分别为2,2,3的英雄升级,结果为3
样例2:
输入:
n = 4 ,u = [100000, 100000, 100000, 100000]输出:0
四个英雄等级相同,谁都无法升级,结果为0
样例3:
输入:
n = 6 ,u = [1, 1, 1, 2, 2, 2]输出:3
可以用1让2,2,2升级,结果为3
3.代码
def solution(n: int, u: list) -> int:
# write code here
min_level = min(u)
cnt = 0
for i in u:
if i > min_level:
cnt += 1
return cnt
if __name__ == '__main__':
print(solution(n = 5, u = [1, 2, 3, 1, 2]) == 3)
print(solution(n = 4, u = [100000, 100000, 100000, 100000]) == 0)
print(solution(n = 6, u = [1, 1, 1, 2, 2, 2]) == 3)