Skip to content

Commit 76c50d6

Browse files
authored
Merge pull request keon#57 from ofek/add-find-missing-number
add find_missing_number
2 parents 5aa2fb0 + 5c8f908 commit 76c50d6

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ Minimal and clean example implementations of data structures and algorithms in P
4040
- [bit](bit)
4141
- [bytes_int_conversion](bit/bytes_int_conversion.py)
4242
- [count_ones](bit/count_ones.py)
43+
- [find_missing_number](bit/find_missing_number.py)
4344
- [power_of_two](bit/power_of_two.py)
4445
- [reverse_bits](bit/reverse_bits.py)
4546
- [single_number2](bit/single_number2.py)

bit/find_missing_number.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
def find_missing_number(nums):
2+
"""Returns the missing number from a sequence of unique integers
3+
in range [0..n] in O(n) time and space. The difference between
4+
consecutive integers cannot be more than 1. If the sequence is
5+
already complete, the next integer in the sequence will be returned.
6+
7+
>>> find_missing_number(i for i in range(0, 10000) if i != 1234)
8+
1234
9+
>>> find_missing_number([4, 1, 3, 0, 6, 5, 2])
10+
7
11+
"""
12+
13+
missing = 0
14+
for i, num in enumerate(nums):
15+
missing ^= num
16+
missing ^= i + 1
17+
18+
return missing

0 commit comments

Comments
 (0)