Secret Identity - codepath/compsci_guides GitHub Wiki

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

Problem Highlights

  • 💡 Difficulty: Easy
  • Time to complete: 10 mins
  • 🛠️ Topics: List Manipulation, In-place Modification

U-nderstand

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

  • Established a set (2-3) of test cases to verify their own solution later.
  • Established a set (1-2) of edge cases to verify their solution handles complexities.
  • Have fully understood the problem and have no clarifying questions.
  • Have you verified any Time/Space Constraints for this problem?
  • The function remove_name() should take a list people and a string secret_identity, and remove all instances of secret_identity from people in place.
HAPPY CASE
Input: people = ['Batman', 'Superman', 'Bruce Wayne', 'The Riddler', 'Bruce Wayne']
       secret_identity = 'Bruce Wayne'
Expected Output: ['Batman', 'Superman', 'The Riddler']

Input: people = ['Batman', 'Bruce Wayne', 'Superman', 'Bruce Wayne', 'Bruce Wayne']
       secret_identity = 'Bruce Wayne'
Expected Output: ['Batman', 'Superman']

EDGE CASE
Input: people = []
       secret_identity = 'Bruce Wayne'
Expected Output: []

Input: people = ['Batman', 'Superman', 'The Riddler']
       secret_identity = 'Bruce Wayne'
Expected Output: ['Batman', 'Superman', 'The Riddler']

P-lan

Plan the solution with appropriate visualizations and pseudocode.

General Idea: Iterate through the list and remove any instances of secret_identity.

1. Define the function `remove_name(people, secret_identity)`.
2. Initialize an index variable `i` to 0.
3. Use a while loop to iterate through `people`:
   - If the current element equals `secret_identity`, remove it using `pop`.
   - Otherwise, increment the index `i`.
4. Return the modified `people` list (although the function is in-place, returning it for clarity)

⚠️ Common Mistakes

  • Not accounting for the changing length of the list during iteration.
  • Not modifying the list in place.

I-mplement

Implement the code to solve the algorithm.

def remove_name(people, secret_identity):
    i = 0
    while i < len(people):
        if people[i] == secret_identity:
            people.pop(i)
        else:
            i += 1
    return people