题解 | #数组中只出现一次的两个数字#
数组中只出现一次的两个数字
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; } }