Missing Number - codepath/compsci_guides GitHub Wiki

Unit 1 Session 2 (Click for link to problem statements)

U-nderstand

Understand what the interviewer is asking for by using test cases and questions about the problem.

  • Will the list ever contain duplicate numbers?
    • No. Each number in the list will be distinct.
  • Will there ever be multiple missing numbers?
    • No.

P-lan

Plan the solution with appropriate visualizations and pseudocode.

General Idea: Loop through the list from smallest to largest, and use a counter variable to try counting up with each element.

1) First, sort the list from smallest to largest
2) Create a counter variable starting at zero
3) For each element in the list
  a) Check if it matches the counter
  b) If it does, all is well -- so add 1 to the counter
  c) If not, this is the missing number, and the counter will stay as is
4) When the loop is finished, return the counter's value

I-mplement

# Example Input: nums = [3,0,1]
# Expected Output: 2

def find_missing(nums):
    nums.sort()
    counter = 0
    for num in nums:
        if num == counter:
            counter += 1 
    return counter

Alternatively, a slightly more time-efficient solution is possible using the break statement to exit the loop early once the missing number is found:

# Example Input: nums = [3,0,1]
# Expected Output: 2

def find_missing(nums):
    nums.sort()
    counter = 0
    for num in nums:
        if num == counter:
            counter += 1 
        else:
            break # Do not need to keep looping
    return counter