首页 > 代码库 > 第15题:单独的数字

第15题:单独的数字

第15题:单独的数字


给定一个数组,除了一个数出现1次之外,其余数都出现3次。找出出现一次的数。

如:{1, 2, 1, 2, 1, 2, 7}, 找出7.

格式:

   第一行输入一个数n,代表数组的长度,接下来一行输入数组A[n],(输入的数组必须满足问题描述的要求),最后输出只出现一次的数。

要求:

   你的算法只能是线性时间的复杂度,并且不能使用额外的空间哦~

样例输入

4
0 0 0 5

样例输出

5

问题解析:

其实这题不难(尽管“不能使用额外的空间”),主要原理就是遍历数组中有没有与其重复的数字,判断有没有重复的原理就是设置一个计数器,具体看代码及注释。


#include <stdio.h>

int main()

{
	int i,j,n,A[10000],count = 0;	//count为计数器 
	scanf("%d",&n);		//为n赋值 
	for(i = 0;i < n;i++)	//为数组赋值 
		scanf("%d",&A[i]);
	for(i = 0;i < n;i++)	//第一层循环:读取每个数,与后面数值作比较 
	{
		for(j = 0;j < n;j++)	//第二次循环:读取i后面的数 
		{
			if(A[i] == A[j])		//判断外层数是否与内层数相等 
				count++;		//若相等则将+1 
		}
		if(count == 1)	//若计数器==1(也就是数组中只有其本身) 
		{
			printf("%d\n",A[i]);	//输出此数并结束 
			return 0;
		}
		count = 0;
	}
	return 0;
} 

如果看不懂欢迎留言提问或者留下邮箱!!!o(∩_∩)o 

(需要邀请码的请留言)


第15题:单独的数字