问题描述
给你n个数,找出与众不同的那一个
输入
输入一个数n(3<=n<=1000),接下来输入n个数,数据保证这n个数中刚好有n-1个数相同,且每个数的绝对值都不大于1000000
输出
输出那个“另类”的数
样例输入
6
5 5 5 1 5 5
样例输出
1
问题分析
此题目给了我们n个数,要我们找出其中的一个不相同的数,也就是n个数中有n-1个数是同一个数,1个是不同的数。我能想到两种方法解决此问题:
- 采用暴力枚举,寻找不同的数,这一种方法的代码就不给出了。
- 采用记录的方式寻找指定的数,因为只有两个数,所以在输入的时候就记录一下每一个数字出现的次数,出现次数为1的那个数就是我们要找的数。
代码
#include<stdio.h>
struct num{int num;int count;
};
int main(){int n, numx;struct num num1 = {0, 0}, num2= {0, 0};scanf("%d", &n);scanf("%d", &numx);num1.num = numx;num1.count += 1;for(int i = 1; i < n; i++){scanf("%d", &numx);if(numx == num1.num){num1.count += 1;}else{num2.num = numx;num2.count += 1;}}if(num1.count == 1){printf("%d", num1.num);}else{printf("%d", num2.num);}return 0;
}