游戏英雄升级潜力评估|豆包MarsCode AI刷题

166 阅读2分钟

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)