游戏英雄升级潜力评估题目解析 | 豆包MarsCode AI 刷题(c++版)

53 阅读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

代码:

#include <iostream>
#include <vector>
#include<algorithm>

int solution(int n, std::vector<int> u) {
    // write code here
    int res = 0;
    sort(u.begin(),u.end());
    for(int i = 1; i < u.size();i++) 
        if(u[i]>u[0]) res++;

    return res;
}

int main() {
    std::cout << (solution(5, {1, 2, 3, 1, 2}) == 3) << std::endl;
    std::cout << (solution(4, {100000, 100000, 100000, 100000}) == 0) << std::endl;
    std::cout << (solution(6, {1, 1, 1, 2, 2, 2}) == 3) << std::endl;
}

感觉就是要发现有潜力的个数就是超过倒数第一的个数,对于倒数第一来说算地狱笑话了。