diff --git a/maths/special_numbers/single_number.py b/maths/special_numbers/single_number.py new file mode 100644 index 000000000000..6789f5d1ef17 --- /dev/null +++ b/maths/special_numbers/single_number.py @@ -0,0 +1,18 @@ +def single_number(nums: list[int]) -> int: + """ + Find the element that appears only once in a list + where every other element appears twice. + + This algorithm uses bitwise XOR to cancel out duplicate numbers. + + >>> single_number([2, 2, 1]) + 1 + >>> single_number([4, 1, 2, 1, 2]) + 4 + >>> single_number([1]) + 1 + """ + res = 0 + for n in nums: + res ^= n + return res