题解 | #数组中只出现一次的两个数字#
数组中只出现一次的两个数字
https://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型一维数组
*/
public int[] FindNumsAppearOnce (int[] nums) {
// write code here
//所有元素异或的结果为两个单独出现的异或结果
int yhResult = 0 ;
for(int num :nums){
yhResult ^= num;
}
//找出2进制为1切在最右侧的那个位
int sign = yhResult & (-yhResult);
//任何数和0异或均为其本身
int num1 = 0 , num2 = 0;
for(int num:nums){
//根据sign分类
if((num & sign) == 0){
num1 ^= num;
}else{
num2 ^= num;
}
}
int[] fin = {Math.min(num1,num2),Math.max(num1,num2)};
return fin;
}
}