权值计算 码蹄集
计算 权值
2023-09-11 14:16:29 时间
题目来源:码蹄集
题目描述:
大致思路:
题意很好理解,就是看某个数字的出现次数是否大于等于它本身的值,返回符合这个条件的数中最大的一个。
使用字典统计每个数字出现的次数。具体地说,使用一个空字典 cnt 来保存每个数字出现的次数,对于列表中的每个数字 x,检查它是否已经在字典 cnt 中出现过。如果没有出现,则将其初始值设为 0,否则将其出现次数加 1。
然后,检查当前数字 x 出现的次数是否大于等于 x 本身,如果是,则更新变量 res 为 x 和当前 res 中的最大值,这样就可以在遍历完整个列表后找到第一个出现次数不小于该数字本身的数字。
最后,输出结果 res,即可得到答案。
Python代码实现:
n = int(input())
cnt = {}
res = 0
for x in map(int, input().split()):
if x not in cnt:
cnt[x] = 0
cnt[x] += 1
if cnt[x] >= x:
res = max(res, x)
print(res)
C++代码实现:
参考链接:https://blog.51cto.com/u_15745546/5950610
#include<bits/stdc++.h>
using namespace std;
#define debug(x) cerr<< #x << " is "<<x<<endl;
typedef long long ll;
typedef pair<int,int> p;
const int INF=0x3f3f3f3f;
const int N=1e5+5;
int n;
unordered_map<int, int> cnt;
int main( )
{
cin>>n;
int res=0,x;
for(int i=1;i<=n;++i){
cin>>x;
cnt[x]++;
if(cnt[x]>=x) res=max(res,x);
}
cout<<res<<"\n";
return 0;
}
Java代码实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
Map<Integer, Integer> cnt = new HashMap<>();
int res = 0;
for (int i = 1; i <= n; ++i) {
int x = in.nextInt();
if (!cnt.containsKey(x)) {
cnt.put(x, 0);
}
cnt.put(x, cnt.get(x) + 1);
if (cnt.get(x) >= x) {
res = Math.max(res, x);
}
}
System.out.println(res);
}
}
代码提交测试结果:
附B站老师思路讲解:https://www.bilibili.com/video/BV1Ua4y1V7qX/?t=1534.5
相关文章
- 【华为云技术分享】计算python程序执行时间
- 蓝桥杯(Java方法、详细解法分析)基础练习 阶乘计算
- 云计算的体系结构
- 阿里张磊:云计算生态价值点正迅速聚焦到“应用”上
- BigDecimal 小数 浮点数 精度 财务计算
- Centos7安装部署openstack--Networking 网络服务(计算节点)
- OpenCV每日函数 计算摄影模块(6) 非真实感渲染算法
- 机器学习笔记 - 2、CNN中的参数计算
- Open3D 计算点云坐标最值
- Open3D (C++) 计算点云的质心
- ABAP并发计算的一个实例
- DL之BP:利用乘法层/加法层(forward+backward)算法结合计算图(CG)求解反向求导应用题
- java - n!乘阶之和的计算 ,1!+2!+...+20!
- 习题 9.2 写一个函数days, 实现第1题的计算。由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出。
- C语言使用技巧(八):与众不同地计算数组元素出现的次数和元素所在位置的索引号
- win10 使用系统自带windows powershell 计算MD5值 和 WSL ubuntu MD5值校验
- Python 加减计算闯关小游戏
- 刷题记录:牛客NC50999表达式计算4
- Matlab在线IDE:MATLAB Online介绍与计算定积分案例