C语言——找单身狗1

题目描述:

在一个整形数组中,只有一个数字出现一次,其他数组都是成对出现的,找出那个只出现一次的数字。

例如:

数组中:1,2,3,4,5,4,3,2,1,只有5出现一次,其他数字都出现2次

解法思路:

可以使用按位异或来解决。异或运算符 ^ ,如果两个数的二进制数相对应的位不同,结果为0,相同则为1。

例如:2 的二进制数为0010,3 的二进制数为0011,那么2^3 结果为 0001。任何数和0异或都为本身

cpp 复制代码
#include <stdio.h>
int Fund(int arr2[], int n)
{
	int count = 0;
	int i = 0;
	for (i = 0; i < n; i++)
	{
		count ^= arr2[i];
	}
	return count;
}

int main()
{
	int arr[] = { 1,2,3,4,5,4,3,2,1 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int ret = Fund(arr, sz);
	printf("只出现一次的数字为:%d\n", ret);
	return 0;
}

关键点就在于,Fund函数中遍历数组中的每一位成员,有两个相同的就会互相抵消为0,最后只会留下只有一个的数与0异或。

相关推荐
云深麋鹿8 小时前
C++ | map&set的使用
开发语言·c++
allnlei8 小时前
gRPC C++ Callback API(Reactor 模式)介绍
开发语言·c++
Eiceblue8 小时前
锁定单元格 :C# 控制 Excel 单元格编辑权限
开发语言·c#·excel
lilong(DLC)8 小时前
Qt信号槽在异步连接时需要将参数进行复制吗?
开发语言·qt
weixin_452077648 小时前
VS code 使用STM32CubelDE for Visual Studio Code环境,如何配置CMakeLists.txt新增其他.C文件路径
c语言·vscode·stm32
沐知全栈开发8 小时前
RSS 参考手册
开发语言
贫民窟的勇敢爷们8 小时前
构建基于Python与机器学习的智能客服
开发语言·python·机器学习
shehuiyuelaiyuehao8 小时前
算法20,x的平方根
开发语言·python·算法
csbysj20208 小时前
.switchClass() 方法详解
开发语言
微信api接口介绍8 小时前
WTAPI与AI集成:下一代个微自动化解决方案
运维·开发语言·人工智能·微信