From 1f3b829dca3a6f235ca78f351bbc5c7eb83e2a37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ab=C3=ADlio=20Azevedo?= Date: Fri, 13 Oct 2023 19:36:22 -0300 Subject: [PATCH 1/2] test: adding more tests to missing number algorithm --- bit_manipulation/missing_number.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/bit_manipulation/missing_number.py b/bit_manipulation/missing_number.py index 92502a778ace..6905fa8f3e7d 100644 --- a/bit_manipulation/missing_number.py +++ b/bit_manipulation/missing_number.py @@ -11,11 +11,25 @@ def find_missing_number(nums: list[int]) -> int: Example: >>> find_missing_number([0, 1, 3, 4]) 2 + >>> find_missing_number([4, 3, 1, 0]) + 2 + >>> find_missing_number([-2, 0, 1, 3, 4]) + Traceback (most recent call last): + ... + ValueError: negative values not supported """ n = len(nums) missing_number = n for i in range(n): + if nums[i] < 0: + raise ValueError("negative values not supported") missing_number ^= i ^ nums[i] return missing_number + + +if __name__ == "__main__": + import doctest + + doctest.testmod() From 72372380c66c9a975c728b184385670c3821c12f Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 29 Oct 2023 22:37:52 +0100 Subject: [PATCH 2/2] Update missing_number.py --- bit_manipulation/missing_number.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/bit_manipulation/missing_number.py b/bit_manipulation/missing_number.py index 7d835d45d948..554887b17562 100644 --- a/bit_manipulation/missing_number.py +++ b/bit_manipulation/missing_number.py @@ -13,10 +13,10 @@ def find_missing_number(nums: list[int]) -> int: 2 >>> find_missing_number([4, 3, 1, 0]) 2 - >>> find_missing_number([-2, 0, 1, 3, 4]) - Traceback (most recent call last): - ... - ValueError: negative values not supported + >>> find_missing_number([-4, -3, -1, 0]) + -2 + >>> find_missing_number([-2, 2, 1, 3, 0]) + -1 >>> find_missing_number([1, 3, 4, 5, 6]) 2 >>> find_missing_number([6, 5, 4, 2, 1]) @@ -29,10 +29,7 @@ def find_missing_number(nums: list[int]) -> int: missing_number = high for i in range(low, high): - index = i - low - if nums[index] < 0: - raise ValueError("negative values not supported") - missing_number ^= i ^ nums[index] + missing_number ^= i ^ nums[i - low] return missing_number