列表

详情


OR61. n个数里出现次数大于等于n/2的数

描述

输入n个整数,输出出现次数大于等于数组长度一半的数。

输入描述

每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。

输出描述

输出出现次数大于等于n/2的数。

示例1

输入:

3 9 3 2 5 6 7 3 2 3 3 3

输出:

3

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 228KB, 提交时间: 2018-09-15

#include<stdio.h>
main()
{
    int i,a[100],j,temp,n=0;
      while (scanf("%d",&a[n]) != EOF && getchar() != '\n') //循环读入多组整型数据,都以空格分隔。
       n++;
  for(i=0;i<n;i++)        //冒泡排序
    {
        for(j=i+1;j<n;j++)
        {
            if(a[i]<a[j])
            {
                temp = a[j];
                a[j]=a[j+1];
                a[j+1] = temp;
            }
        }
    }
    printf("%d",a[(n+1)/2]);
 
}

C 解法, 执行用时: 1ms, 内存消耗: 248KB, 提交时间: 2021-05-09

#include <stdio.h>
int main()
{
    int n[101]={0};
    int i=0;
    int a=0;
    int len=0;
    do{
        scanf("%d",&a);
        n[a]++;
        len++;
    }while(getchar()!='\n');
    for(i=0;i<len;i++)
    {
        if(n[i]>=len/2)
        {
            printf("%d",i);
        }
    }
    return 0;
}

上一题