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异或。

相关推荐
wefg115 小时前
【C语言】用 C 语言实现多态
c语言·开发语言
threelab15 小时前
Three.js 动态旋转同心圆着色器 | 三维可视化效果
开发语言·javascript·着色器
我不是懒洋洋15 小时前
手写一个B+树:从原理到数据库索引实战
c语言·c++·经验分享
奶茶树15 小时前
【STL/数据结构】哈希表和unordered系列容器的封装
开发语言·c++·散列表
Brilliantwxx15 小时前
【C++】初步认识STL(3)
开发语言·c++·笔记·算法
charlie11451419115 小时前
通用GUI编程技术——图形渲染实战(四十)——深度缓冲与3D变换:从平面到立体
开发语言·c++·平面·3d·图形渲染·win32
小张同学82415 小时前
-RAG检索增强生成让智能体拥有企业级专属知识库
开发语言·python·架构·pycharm
DevilSeagull15 小时前
Rust 枚举(enum)深度解析:从定义到 Option 的安全之道
开发语言·后端·安全·rust·github
Ulyanov15 小时前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》:实时时钟与数据驱动 UI —— 从“事件回调”到“状态绑定”的范式跃迁
开发语言·python·qt·ui·架构·交互
AI进化营-智能译站15 小时前
ROS2 C++开发系列06:变量、数据类型与IO实战
java·开发语言·c++·ai