给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字。
public class Solution { /* * @param A: An integer array * @return: An integer array */ public List<Integer> singleNumberIII(int[] A) { // write your code here List<Integer> list = new ArrayList<>(); if (A == null || A.length == 0) { return list; } int result = 0; for (int i = 0; i < A.length; i++) { result ^= A[i]; } int k = 0; while(result % 2 == 0) { k++; result >>= 1; } int r1 = 0, r2 = 0; for (int i = 0; i < A.length; i++) { int flag = (A[i] >> k) % 2; if (flag == 0) { r1 ^= A[i]; } else { r2 ^= A[i]; } } list.add(r1); list.add(r2); return list; } }