Single Number III

    1. public class Solution {
    2. /**
    3. * @param A : An integer array
    4. * @return : Two integers
    5. */
    6. ArrayList<Integer> nums = new ArrayList<Integer>();
    7. if (A == null || A.length == 0) return nums;
    8. int x1xorx2 = 0;
    9. for (int i : A) {
    10. x1xorx2 ^= i;
    11. }
    12. // get the last 1 bit of x1xorx2, e.g. 1010 ==> 0010
    13. int last1Bit = x1xorx2 - (x1xorx2 & (x1xorx2 - 1));
    14. int single1 = 0, single2 = 0;
    15. for (int i : A) {
    16. single1 ^= i;
    17. } else {
    18. single2 ^= i;
    19. }
    20. }
    21. nums.add(single1);
    22. nums.add(single2);
    23. return nums;
    24. }
    25. }