数组中只出现一次的数字(java实现)
2021-07-11 00:04
标签:int 情况 参数 lse 有一个 问题 span 一个 i++ 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 如果数组中只有一个数字出现奇数次,则将数组中所有的数字做异或可得该数字。 数组中有两个数字出现奇数次,设这两个数字分别为a、b,则将数组中所有的数字做异或得到的是a与 b异或的结果,设为xor。 数字a与b不同,则a与b的二进制表示中至少存在1位不同,xor二进制表示中为1的位即是a与b不同的位,假设a与b的第k位不同,a在该位上为1,b在该位上为0 。(k可以选取为从起始位开始的第一个不同的位) 则可以根据数字第k位的取值情况将数组分为两个字数组,第k位为1的子数组必包含a与其他出现偶数次的数字(相同的数字第k位肯定相同),第k位为0的子数组必包含b与其他出现偶数次的数字。 子数组中的数字做异或可分别得到数字a与b。 数组中只出现一次的数字(java实现) 标签:int 情况 参数 lse 有一个 问题 span 一个 i++ 原文地址:https://www.cnblogs.com/deltadeblog/p/9551156.html
问题描述
解题思路
实现代码
//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
public void findNumsAppearOnce(int[] array, int num1[], int num2[]) {
// 得到两个数字的异或结果xor
int xor = 0;
for (int i=0; i
下一篇:java tips