游戏排名第三大的分数
问题描述
*小M想要通过查看往届游戏比赛的排名来确定自己比赛的目标分数。他希望找到往届比赛中排名第三的分数,作为自己的目标。具体规则如下:
- 如果分数中有三个或以上不同的分数,返回其中第三大的分数。
- 如果不同的分数只有两个或更少,那么小M将选择最大的分数作为他的目标。
请你帮小M根据给定的分数数组计算目标分数。*
样例:
输入:n = 4,nums = [2, 2, 3, 1] 输出:1
知识点:
数组排序——sort()
思路:
1、不完整想法:当n>=3时从大到小排列,排在第三的为所求,n<3时,取最大值 排名第三的分数,这里指对不同的数字进行排列,取大小排在第三的数字
2、对数组进行排序,从大到小遍历,当遇到第 i 个数与第 i-1 个数不同时,则记为 分数排名更新(用k记录)
c++代码
return a>b;
}
int solution(int n, std::vector<int> nums) {
// write code here
sort(nums.begin(),nums.end(),cmp);
queue<int>q;
int k=1;
for(int i=1;i<n;i++){
if(nums[i]!=nums[i-1]){
k++;
if(k==3){
return nums[i];
}
}
}
return nums[0];
}
问题描述
小F最近迷上了玩一款游戏,她面前有一个永久代币卡的购买机会。该卡片的价格为 a
勾玉,每天登录游戏可以返还 b
勾玉。小F想知道她至少需要登录多少天,才能让购买的永久代币卡回本。
样例1:
输入:a = 10, b = 2 输出:5
样例2:
输入:a = 10, b = 3
输出:4
思路:当a是b的整数倍时,a/b为所求; 否则,a/b+1 为所求;
所需知识点: 取模(%)判断是否整除
问题描述
一个整数如果由相同数字构成,可以称为完美整数;比如说1、11、333就是完美整数,12、19、101就是不完美的整数。
现在想知道,在区间 [x, y]
中有多少个整数是完美整数。
输入格式
每个样例有一行,是整数 x
和 y
;(1 ≤ x ≤ y ≤ 10^9)
输出格式
每一个样例一行,是整数 m
,表示区间 [x, y]
中有 m 个整数是完美整数。
输入样例1
1 10
输出样例1
9
输入样例2
2 22
输出样例2
10
思路:遍历 x 到 y 之间的每一个数,将这些数字转成字符串(to_string());
string s = to_string(i);}
若这些字符串长度为1,计数+1;若长度大于1;遍历字符串,若每个字符相同,则计数+1
k++;
} else {
int q = 1;
for (int j = 1; j < s.length(); j++) {
if (s[j] != s[j - 1]) {
break;
}
q++;
}
if (q == s.length()) {
k++;
}
}
上述若有改进之处,欢迎友友指出!