问题描述:
给你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;
}