列表

详情


SH13. 找出重复的数字

描述

一组无序的自然数集合,由0,1,2... ...,n的数字和一个的数字X(X>=0 && X<=n)组成,请从集合中找出这个重复数字X。

输入描述

空格分割的自然数集合

输出描述

重复数字

示例1

输入:

9 6 4 2 1 3 5 7 0 1 8

输出:

1

说明:

0,1,2,3,4,5,6,7,8,9 + 1

示例2

输入:

3 0 2 2 1

输出:

2

说明:

0,1,2,3 + 2

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 368KB, 提交时间: 2021-07-03

#include <stdio.h>

int main() {
   int a[1000]={0} ;
   int i = 0 ;
   while (scanf("%d", &i) != EOF) 
   { // 注意 while 处理多个 case
       // 64 位输出请用 printf("%lld")
      
       a[i]++;
       if ( a[i]==2 )   
       printf("%d\n", i);
   }
   return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 304KB, 提交时间: 2021-09-11

#include <stdio.h>

int main()
{
    int n;
    int arr[1000]={0};
    while(scanf("%d",&n)!=EOF)
    {
        arr[n]++;
    }
    int i;
    for(i=0;i<1000;i++)
    {
        if(arr[i]==2)
        {
            printf("%d\n",i);
            break;
        }
    }
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 356KB, 提交时间: 2020-05-20

#include<stdio.h>
int main(){
    int sum=0,a,i=0;
    while(scanf("%d ",&a)!=EOF){
        sum +=a;
        if(a>i){i=a;}
    }
    sum -= i*(i+1)/2;
    printf("%d",sum);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2020-05-07

#include<stdio.h>
int main(){
    int sum=0,a,i=0;
    while(scanf("%d ",&a)!=EOF){
        sum +=a;
        if(a>i){i=a;}
    }
    sum -= i*(i+1)/2;
    printf("%d",sum);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2020-05-18

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int a[1000],b[1000],i=0,n=-1;
    for(i=0;i<1000;i++)
        b[i]=0;
    i=0;
    while(1){
        scanf("%d",&a[i]);
        b[a[i]]++;
        if(n==-1){
                if(b[a[i]]>1)n=a[i];
        }
        if(getchar()!='\n')i++;
        else break;
    }
    printf("%d",n);
}

上一题