欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字,编程实现

程序员文章站 2024-02-02 15:20:28
...

<==接上一篇博客:找到出现一次的两个数字第二种方法.
因为我第一次看到这道题,首先想到的是用第二种方法编程,用了指针去比较,循环语句用的是while.然后我写了好久,但我没做出来,后来看了一个大佬的博客,竟有点怀疑人生,哎自愧不如这道题代码竟然可以这么简单

#include <stdio.h>
#include <stdlib.h>

int main()
{
	// 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。
	//找出这两个数字,编程实现。
	int arr[] = { 4,8,8,4,5,9,3,5,9,3,15,56 };
	int count = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);//12
	int i = 0;
	int j = 0;
	for(i = 0; i < sz; i++)
	{
		count = 0;//每次执行循环时初始化为0
		for (j = 0; j < sz ; j++)
		{
			if (arr[i] == arr[j])
			{
				count++;
			}
		}
		if (count == 1)
		{
			printf("%d\n",arr[i]);
		}
	}

	system("pause");
	return 0;
}

思考:上一篇博客用的是二进制位移的方法,不太容易想,而且也比较难读懂,这种方法它是直接根据题目的需求来设计的。就是:我只管题目中出现一次的数字,至于其他数字我不管你出现几次,和我无关。然后自定义一个变量计数,最后打印出只出现一次的数字,思路特别清晰。