位运算场景一成对整数里面找单个数字

本文介绍了一种在不使用额外空间的情况下找出数组中唯一出现一次的元素的方法。通过位运算中的异或操作实现,利用异或的特性a^a=0和a^0=a来解决该问题,并给出了具体的Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 描述:

          给定一个非空整数数组,除了某个元素只出现一次外,其余每个元素均出现两次,找出那个只出现一次的元素。不使用额外空间实现

样例: 
输入:[2,2,1]

输出 1

输入:[4,1,2,1,2]

输出 4

2 实现

public static void singleNumber() {
		int nums[] = new int[] {4,1,2,1,2};
		int n = 0;
		for(int i=0;i<nums.length;i++) {
			n ^= nums[i];
		}
		System.out.println(n);
		System.out.println(4^1^2^1^2);
	}

3 总结

位运维 异或的场景。 异或有如下规则:

a ^ 0 = a
a ^ a = 0
a^1 = a +1   
a^-1 = -(a+1)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值