Missing Numbers.
Finding the missing number(s) in an array of integers with expected length.
- The given array can contain integers between 1 and 100.
- The given array is sorted in ascending order starting at 1.
- The given array can never exceed a length of 100.
- The given array does not contain duplicate values.
Examples
# python
missingNumbers([1, 2, 3, 4, 6], 6) # Expected: [5]
missingNumbers([1, 2, 3, 4, 6, 8], 10) # Expected: [5, 7, 9, 10]
Solution
# python
def missingNumbers(nums, length):
missing = []
index = 0
for n in range(1, length + 1):
if index < len(nums) and nums[index] == n:
index += 1
else:
missing.append(n)
return missing
Duplicate Numbers.
Find the duplicate number(s) in an array of integers.
- The given array can contain integers between 1 and 100.
- The given array is sorted in ascending order starting at 1.
Examples
# python
duplicateNumbers([1, 2, 2, 3, 3]) # Expected: [2, 3]
duplicateNumbers([1, 1, 1, 2, 3]) # Expected: [1]
Solution
# python
def duplicateNumbers(nums):
duplicates = {}
previous = None
for n in nums:
if previous == n and not n in duplicates:
duplicates[n] = True
previous = n
return list(duplicates.keys())
Tip: I'm using a
bool
dictionary to store recorded duplicates. The reason being, using Python'sin
operator is more costly for lists.More information: Performance of Python Types