乔鲁诺の黄金般的题解
2023-10-28 17:01:38
发布于:上海
214阅读
0回复
0点赞
这是题解
#include<iostream>
using namespace std;
int li[1000005]; /*[1]*/
int main(){
int n,num;
cin>>n;
for(int i=0;i<n;i++){/*[2]*/
cin>>num;
li[num]++;
}
for(int i=1;i<1000005;i++)/*[3]*/
if(li[i]>n/2) cout<<i;
}
————————————————————以下是解释———————————————————
[1] 这里的li[1000005]是储存每一个数字出现的次数,方便计算,下标作为数字,值作为出现的次数
[2] 这里的for循环先将数值输入后将与数字对应的下标加1(也就是把数字出现的次数增加1)
[3] 这里的for循环通过检索列表数组li中每个数字出现的次数来判断哪个数出现的次数超过一半
总结:这个方法是一种通过万怨深把列表数组当做Python中的字典来解决问题的一种方法
编者骄傲:不敢说是最快的,但一定是占内存最少的(乔鲁诺骄傲)
全部评论 3
666
2024-04-21 来自 广东
1这种解法有问题,题目里面说整数,不一定可以作为li的下标使用。
2024-10-04 来自 浙江
06
2024-04-05 来自 江苏
0
有帮助,赞一个