Common Cause - 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: Arrays, Sets, Iteration
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 common_elements() should take two lists lst1 and lst2 and return a list of elements that are present in both lists.
HAPPY CASE
Input: lst1 = ["super strength", "super speed", "x-ray vision"], lst2 = ["super speed", "time travel", "dimensional travel"]
Expected Output: ["super speed"]
Input: lst1 = ["apple", "banana", "cherry"], lst2 = ["banana", "cherry", "date"]
Expected Output: ["banana", "cherry"]
EDGE CASE
Input: lst1 = ["super strength", "super speed", "x-ray vision"], lst2 = ["martial arts", "stealth", "master detective"]
Expected Output: []
Input: lst1 = [], lst2 = ["time travel"]
Expected Output: []
P-lan
Plan the solution with appropriate visualizations and pseudocode.
General Idea: Convert one list to a set for O(1) average time complexity checks and iterate through the other list to find common elements.
1. Convert `lst2` to a set called `set2` for faster lookups.
2. Initialize an empty list `result` to store common elements.
3. Iterate through each element in `lst1`:
a. If the element is in `set2`, append it to `result`.
4. Return `result`
⚠️ Common Mistakes
- Not accounting for duplicates in the input lists.
- Not handling cases where one or both lists are empty.
I-mplement
Implement the code to solve the algorithm.
def common_elements(lst1, lst2):
set2 = set(lst2)
result = []
for item in lst1:
if item in set2:
result.append(item)
return result