问题描述
小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;
}
感觉就是要发现有潜力的个数就是超过倒数第一的个数,对于倒数第一来说算地狱笑话了。