第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-90 出现次数最多的整数

简介: 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-90 出现次数最多的整数

第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-90 出现次数最多的整数



前言

       这段时间我会把蓝桥杯官网上的所有非VIP题目都发布一遍,让大家方便去搜索,所有题目都会有几种语言的写法,帮助大家提供一个思路,当然,思路只是思路,千万别只看着答案就认为会了啊,这个方法基本上很难让你成长,成长是在思考的过程中找寻到自己的那个解题思路,并且首先肯定要依靠于题海战术来让自己的解题思维进行一定量的训练,如果没有这个量变到质变的过程你会发现对于相对需要思考的题目你解决的速度就会非常慢,这个思维过程甚至没有纸笔的绘制你根本无法在大脑中勾勒出来,所以我们前期学习的时候是学习别人的思路通过自己的方式转换思维变成自己的模式,说着听绕口,但是就是靠量来堆叠思维方式,刷题方案自主定义的话肯定就是从非常简单的开始,稍微对数据结构有一定的理解,暴力、二分法等等,一步步的成长,数据结构很多,一般也就几种啊,线性表、树、图、再就是其它了。顺序表与链表也就是线性表,当然栈,队列还有串都是属于线性表的,这个我就不在这里一一细分了,相对来说都要慢慢来一个个搞定的。蓝桥杯中对于大专来说相对是比较友好的,例如三分枚举、离散化,图,复杂数据结构还有统计都是不考的,我们找简单题刷个一两百,然后再进行中等题目的训练,当我们掌握深度搜索与广度搜索后再往动态规划上靠一靠,慢慢的就会掌握各种规律,有了规律就能大胆的长一些难度比较高的题目了,再次说明,刷题一定要循序渐进,千万别想着直接就能解决难题,那只是对自己进行劝退处理。加油,平常心,一步步前进。


出现次数最多的整数

资源限制

内存限制:512.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。

输入格式:

第一行是一个整数NN £  20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。

输出格式:

输出只有一行,即出现次数最多的那个元素值。

输入输出样例

样例输入

5

100

150

150

200

250

样例输出

150

题解:这个题目给的符号根本无法理解,所以就不理解了,我们从输入样例以及输出样例中可以看到实际上这个问题问的就是在一个列表中找到出现次数最多的数,那么我们其实可以先去重留下一组数,再针对这组数的每一个数字做计数运算,最后排序一下,这个题目使用Python语言最为方便,因为给了计数的函数。直接遍历看谁最大就行,很痛苦

C语言

#include <stdio.h>
int main()
{
  int n,i,j,t,max=1,num=0;
  scanf("%d",&n);
  if(n>0)
  {
  int a[n];
  for(i=0;i<n;i++)
  scanf("%d",a+i);
  j=num=a[0];
  t=1;
  for(i=1;i<n;i++)
  if(a[i]==j)
  {
    ++t;
    if(t>max)
    {
      max=t;num=a[i];
    } 
  }
  else
  {
    t=1;
    j=a[i];
  }
  printf("%d",num);
  }
  return 0;
}

C++语言

#include "iostream"
#include "string"
using namespace std;
int main()
{
  int n;
  cin>>n;
  if(n <= 0) return 0;
  string *a = new string[n];
  int i;
  for(i = 0; i < n; ++i)
    cin>>a[i];
  string number = a[0];
  int count = 1;
  int flag = 1;
  for(i = 1; i < n; ++i)
  {
    if(a[i].compare(a[i - 1]) == 0)
      flag = flag + 1;
    if(a[i].compare(a[i - 1]) == 0 || i == n -1)
    {
      if(flag > count)
      {
        count = flag;
        number = a[i - 1];
      }
      flag = 1;
    }
  }
  cout<<number<<endl;
  return 0;
}

Java语言

在扫描输入内容上会有不同的方法,但是与Scanner的用法是相同的。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if(n<=0){
            System.out.println();
            return;
        }
        int arr [] =new int[n];
        int num [] = new int[n];
        for(int i =0;i<n;i++){
            arr[i]=sc.nextInt();
        }
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        ArrayList<Integer> list = new ArrayList<Integer>();
        for(int i=0;i<n;i++){
            if(!list.contains(arr[i])){
                list.add(arr[i]);
            }
        }
        for(int i=0;i<list.size();i++){
            int number=0;
            for(int j=0;j<n;j++){
                if(arr[j]==list.get(i)){
                    number++;
                }
            }
            map.put(list.get(i), number);
        }
        Set<Integer> set= map.keySet();
        int max = 0;
        int index =0;
        for(int i : set){
            if(map.get(i)>max){
                max=map.get(i);
                index = i;
            }
        }
        System.out.println(index);
    }
}

Python语言

相对简洁,但是需要对Python的一些语法很了解,特别是列表推导式的熟悉。

n = int(input())
l = []
s = []
r = []
if n > 0:
    for i in range(n):
        l.append(int(input()))
    l.sort(reverse=True)
    for i in range(n):
        t = l.count(l[i])
        s.append(t)
    max1 = 0
    for i in range(n):
        if max1 <= s[i]:
            max1 = s[i]
            g = i
    print(l[g])

总结

没有什么不付出就能拿到的结果,我们都是在负重前行,最终结果与自身先天的脑力有一定的关系,但是还是有很大一部分看自己后天的努力,其实从报名到比赛也就5个月左右,真正刷题的事件也就2个月,2个月回忆一下你真正的认真刷过题吗,如果你真的用尽所有的精力去努力了,那么我相信你最终的成绩一定会让你满意的,加油。

没有什么不付出就能拿到的结果,我们都是在负重前行,最终结果与自身先天的脑力有一定的关系,但是还是有很大一部分看自己后天的努力,其实从报名到比赛也就5个月左右,真正刷题的事件也就2个月,2个月回忆一下你真正的认真刷过题吗,如果你真的用尽所有的精力去努力了,那么我相信你最终的成绩一定会让你满意的,加油。


相关文章
|
3月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
57 0
|
3月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1007 印章
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1007 印章
29 0
|
3月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1006 拿金币
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1006 拿金币
22 0
|
3月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
42 0
|
3月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
40 0
|
3月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
50 0
|
3月前
|
机器学习/深度学习 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-996 车的放置
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-996 车的放置
44 0
|
3月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
27 1
|
3月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-986 藏匿的刺客
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-986 藏匿的刺客
45 0
|
3月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-985 幸运的店家
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-985 幸运的店家
46 0