剑指offer(牛客网)数组中只出现一次的数字

it2025-03-13  20

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 //num1,num2分别为长度为1的数组。传出参数 //将num1[0],num2[0]设置为返回结果 public class Solution { public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) { int sum = 0; //先整体异或 for (int x : array) { sum ^= x; } //找出第一不为零的那个二进制位 //以那个二进制划分 int k = 0; while ( (sum >> k & 1) == 0) { k++; } int first = 0; for (int x : array) { if ( (x >> k & 1) == 0 ) { first ^= x; } } num1[0] = first; num2[0] = sum ^ first; } }

 

最新回复(0)