LeetCode – Single Number II (Java)

Problem

Given an array of integers, every element appears three times except for one. Find that single one.

Java Solution

This problem is similar to Single Number.

public int singleNumber(int[] A) {
    int ones = 0, twos = 0, threes = 0;
    for (int i = 0; i < A.length; i++) {
        twos |= ones & A[i];
        ones ^= A[i];
        threes = ones & twos;
        ones &= ~threes;
        twos &= ~threes;
    }
    return ones;
}

7 thoughts on “LeetCode – Single Number II (Java)”

  1. #Given an array of integers, every element appears three times except for one. Find that single one.
    =====

    not clear. ‘single one’ can be 1 ,2 or any number over3???

    lets say all 3times, and single 1time
    #1 xor elements. it will each one once 111 222 333 4 -> 1 2 3 4

    #2 sum all elements:
    #3 deduct from 2step sum of step1, 3 times,thus on exit it is -8
    ——–
    lets say all 3times, single one is twice.
    same only on step #1 it is all w/out 4
    so, after same stesp, it is 8 in the end,.

    NOT SURE IF NUMBER occur any number >3 ???

  2. so we have 333 111 222 44,

    #1 xor all those give up : ‘3 1 2 ‘ xor twice make it 0.

    #2 sum all those 33 111 222 44
    #3 deduct 3times 3 2 1 from step2
    we have only 44. divide 2 vuala!!

    done in loop..i guess.

    is is as solution???????


  3. public int singleNumber(int[] A){
    List list=Arrays.stream(A).boxed().collect(Collectors.toList());
    int number=0;
    for(int i=0;i<A.length;i++){
    if(Collections.frequency(list, A[i])==1){
    number=A[i];
    }
    }
    return number;
    }

Leave a Comment