【简单题-指针数组】CCF 201312-1 出现次数最多的数
2018-03-13 16:00
267 查看
CCF 201312-1 出现次数最多的数
问题描述 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。
输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。输出格式 输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。样例输入6
10 1 10 20 30 20样例输出10
题意】 求一个数组中出现次数最多的数,最小的哪一个。 【类型】
简单循环
【分析】
使用指针数组p记录每个数出现的次数,与这道题极其类似->点击打开链接 【注意】 之前提交了N遍,用C++用指针数组的方式,提交了都得0分,原因是p数组没有初始化啊!!!G++他就让你很闹心! 需要添加这样一行:于是就100分了,可是Java并不需要初始化,提交依然100分呢。
O(n)
【100分C++代码】
【100分Java代码】
【100分C++代码--采用map】
问题描述 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。
输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。输出格式 输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。样例输入6
10 1 10 20 30 20样例输出10
题意】 求一个数组中出现次数最多的数,最小的哪一个。 【类型】
简单循环
【分析】
使用指针数组p记录每个数出现的次数,与这道题极其类似->点击打开链接 【注意】 之前提交了N遍,用C++用指针数组的方式,提交了都得0分,原因是p数组没有初始化啊!!!G++他就让你很闹心! 需要添加这样一行:于是就100分了,可是Java并不需要初始化,提交依然100分呢。
memset(p,0, sizeof(p));【时间复杂度&&优化】
O(n)
【100分C++代码】
#include <iostream> #include <cstdio> #include <cstring> #include <map> using namespace std; int main() { int a[10005]; int p[10005]; int n; int x; cin>>n; memset(p,0, sizeof(p)); for(int i=0;i<n;i++){ cin>>a[i]; x=a[i]; p[x]++;//统计每个数值出现的次数 } int maxp=-1;//最大的出现次数 int maxp_index=0;//最大的的出现次数对应的数值 for(int i=0;i<10005;i++){ if(p[i]>maxp){//如果出现次数和他相等的数,不会更新 maxp=p[i]; maxp_index=i; } } cout<<maxp_index; return 0; }
【100分Java代码】
import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub new Main().run(); } public void run(){ Scanner sc = new Scanner(System.in); int N =sc.nextInt(); int[]count=new int[10001]; for(int i=0;i<N;i++){ ++count[sc.nextInt()]; } int maxcount =-1; int result=0; for(int i=0;i<10000;i++){ if(count[i]>maxcount){ maxcount=count[i]; result=i; } } System.out.println(result); sc.close(); } }因为不甘心,于是C++把指针数组换成了map,得了100分
【100分C++代码--采用map】
#include <iostream> #include <cstdio> #include <map> using namespace std; int main() { int a[10005]; map<int,int>p; int n; int x; cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; x=a[i]; p[x]++;//统计每个数值出现的次数 } int maxp=-1;//最大的出现次数 int maxp_index=0;//最大的的出现次数对应的数值 for(map<int,int>::iterator it=p.begin();it!=p.end();it++){ if(it->second>maxp){ maxp=it->second; maxp_index=it->first; } } cout<<maxp_index; return 0; }
相关文章推荐
- CCF-201312-1-出现次数最多的数
- CCF 201312-1 出现次数最多的数
- CCF | 201312-1 出现次数最多的数
- CCF 201312-1 出现次数最多的数
- CCF CSP 201312-1 出现次数最多的数
- CCF系列之出现次数最多的数(201312-1)
- CCF考试练习——201312-1(出现次数最多的数)
- CCF-201312-1-出现次数最多的数
- CCF计算机软件能力认证试题练习201312-1-出现次数最多的数
- CCF-CAP 201312-1 出现次数最多的数 答案
- 201312_1 ccf csp 出现次数最多的数(100)
- 201312 CCF 第一题 出现次数最多的数
- CCFCSP 201312-1出现次数最多的数
- 201312-1出现次数最多的数——CCF计算机软件能力认证试题历届真题
- ccf试题201312-1——出现次数最多的数
- CCF 201312-1出现次数最多的数
- CCF 201312-1 出现次数最多的数 (水题)
- CCF 201312-1 出现次数最多的数
- 201312-1 出现次数最多的数 ccf
- CCF 201312-1 出现次数最多的数