17 lines
680 B
Python
17 lines
680 B
Python
class Solution_once:
|
|
def singleNumber(self, arr):
|
|
ones, twos = 0, 0
|
|
for x in arr:
|
|
ones, twos = (ones ^ x) & ~twos, (ones & x) | (twos & ~x)
|
|
assert twos == 0
|
|
return ones
|
|
class Solution_twice:
|
|
def single_number(arr):
|
|
ones, twos, threes = 0, 0, 0
|
|
for x in arr:
|
|
ones, twos, threes = (~x & ones) | (x & ~ones & ~twos & ~threes), (~x & twos) | (x & ones), (~x & threes) | (x & twos)
|
|
return twos
|
|
|
|
if __name__ == "__main__":
|
|
print(Solution_once().singleNumber([1, 1, 1, 2, 2, 2, 3]))
|
|
print(Solution_once().singleNumber([5, 3, 0, 3, 5, 5, 3])) |