问题描述:
给你n个数,找出与众不同的那一个
输入:
输入一个数n(3<=n<=1000),接下来输入n个数,数据保证这n个数中刚好有n-1个数相同,且每个数的绝对值都不大于1000000
输出:
输出那个“另类”的数
样例输入:
6 5 5 5 1 5 5
样例输出:
1
原因分析:
我的原始代码(错误代码):没有考虑 1 5 5 5 5 5 和 5 5 5 5 5 1这两种情况,只考虑了1在中间的情况
#include<stdio.h>
#include<math.h>int main()
{int a[1000005],n,i,j,p;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=1;i<n-1;i++){if(a[i]!=a[i-1]&&a[i]!=a[i+1]){printf("%d",a[i]);break;}}return 0;
}
解决方案:
对剩余两种情况继续讨论 即可
#include<stdio.h>
#include<math.h>int main()
{int a[1000],n,i,j,p;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=1;i<n-1;i++){if(a[0]!=a[i]&&a[0]!=a[i+1]) // 1 5 5 5 5 5情况{printf("%d",a[0]);break;}if(a[i]!=a[i-1]&&a[i]!=a[i+1]){printf("%d",a[i]);break;}if(a[i+1]!=a[i]&&a[i+1]!=a[i-1]) // 5 5 5 5 5 1情况{printf("%d",a[i+1]);break;}}return 0;
}