To create intersection, both lists must share the same node object for the intersecting node.
Step 2: Check code correctness
headA = Node(3)
headB = Node(99)
node = Node(8)
headA.next = node
headB.next = node creates node with value 8 once and assigns it as next for both lists, ensuring intersection.
Final Answer:
headA and headB share the same node object for value 8. -> Option C
Quick Check:
Shared node object creates intersection [OK]
Hint: Intersection needs shared node object, not just same value nodes [OK]
Common Mistakes:
Creating separate nodes with same value instead of shared node
Assigning next pointers incorrectly
Not linking nodes properly
3. What will be the output of the following Python code that finds the intersection point of two linked lists?
class Node:
def __init__(self, val):
self.val = val
self.next = None
def get_intersection(headA, headB):
a, b = headA, headB
while a != b:
a = a.next if a else headB
b = b.next if b else headA
return a.val if a else None
# Setup
common = Node(7)
common.next = Node(10)
headA = Node(3)
headA.next = Node(6)
headA.next.next = common
headB = Node(99)
headB.next = common
print(get_intersection(headA, headB))
medium
A. 7
B. 10
C. None
D. 3
Solution
Step 1: Understand the intersection nodes
Both lists share node with value 7 and then 10. Intersection is at node with value 7.
Step 2: Trace the get_intersection function
Pointers a and b traverse lists; when they meet at node 7, function returns 7.
Final Answer:
7 -> Option A
Quick Check:
First shared node value is 7 [OK]
Hint: Two-pointer method returns first shared node value [OK]
Common Mistakes:
Returning value of second shared node
Returning None if not careful with pointer resets
Confusing node values with references
4. The following code attempts to find the intersection point of two linked lists but does not work correctly. What is the main error?
def get_intersection(headA, headB):
a, b = headA, headB
while a != b:
a = a.next
b = b.next
return a.val if a else None
medium
A. It returns the value of the last node instead of the intersection.
B. It compares node values instead of node references.
C. It uses incorrect variable names for nodes.
D. It does not reset pointers to the other list when reaching the end.
Solution
Step 1: Analyze pointer movement
The code moves pointers a and b forward but never resets them to the other list's head.
Step 2: Understand consequence
Without resetting, pointers may reach None at different times and never meet, missing intersection.
Final Answer:
It does not reset pointers to the other list when reaching the end. -> Option D
Quick Check:
Resetting pointers is key for intersection detection [OK]
Hint: Reset pointers to other list head when reaching end [OK]
Common Mistakes:
Not resetting pointers causes infinite loop or no detection
Comparing values instead of references
Returning wrong node value
5. Given two singly linked lists that may or may not intersect, which approach correctly finds the intersection point in O(m+n) time and O(1) space?
Options: A) Use two pointers starting at heads; move each pointer to the other list's head when reaching end until they meet. B) Use a hash set to store nodes of first list, then check nodes of second list for membership. C) Compare every node of first list with every node of second list. D) Reverse both lists and compare nodes from the start until mismatch.
hard
A. Two-pointer switching heads method until pointers meet.
B. Hash set membership check for intersection.
C. Nested loops comparing all nodes pairwise.
D. Reverse lists and compare nodes from start.
Solution
Step 1: Analyze time and space complexity
Two-pointer switching heads method until pointers meet. uses two pointers and no extra space, running in O(m+n) time and O(1) space.
Step 2: Compare other options
Hash set membership check for intersection. uses extra space (hash set), Nested loops comparing all nodes pairwise. is O(m*n), Reverse lists and compare nodes from start. modifies lists and is inefficient.
Final Answer:
Two-pointer switching heads method until pointers meet. -> Option A
Quick Check:
Two-pointer method is optimal for intersection [OK]