Linked List Components - Problem

Imagine you have a linked list like a chain of connected nodes, where each node contains a unique integer value. You're also given an array nums that contains some of these values (but not necessarily all of them).

Your task is to find how many connected components exist in the linked list for the values in nums. Two values form a connected component if they appear consecutively in the linked list and both values are present in the nums array.

Example: If your linked list is 0→1→2→3 and nums = [0, 1, 3], then:

  • Values 0 and 1 are consecutive and both in nums → 1 component
  • Value 3 is in nums but not connected to others → 1 component
  • Total: 2 components

Return the total number of connected components.

Input & Output

example_1.py — Basic Components
$ Input: head = [0,1,2,3], nums = [0,1,3]
Output: 2
💡 Note: Values 0 and 1 form one connected component since they're consecutive in the linked list and both exist in nums. Value 3 forms another component by itself. Value 2 is ignored since it's not in nums.
example_2.py — Single Component
$ Input: head = [0,1,2,3,4], nums = [0,3,1,4]
Output: 2
💡 Note: Values 0 and 1 are consecutive and both in nums (component 1). Values 3 and 4 are consecutive and both in nums (component 2). Value 2 breaks the sequence between them.
example_3.py — All Isolated
$ Input: head = [0,1,2,3], nums = [0,2]
Output: 2
💡 Note: Values 0 and 2 are both in nums but not consecutive in the linked list (separated by value 1), so they form 2 separate components.

Constraints

  • The number of nodes in the linked list is in the range [1, 104]
  • 0 ≤ Node.val < 104
  • All values in the linked list are unique
  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] < 104
  • All values in nums are unique
  • nums is a subset of all values in the linked list

Visualization

Tap to expand
Linked List ComponentsNode 0in nums ✓Node 1in nums ✓Node 2not in numsNode 3in nums ✓Component 1Component 2ConnectedIsolatedAlgorithm Steps:1. Convert nums = [0,1,3] to hash set {0,1,3}2. Traverse: 0✓→1✓→2✗→3✓ (✓ = in set, ✗ = not in set)3. Count components: [0,1] + [3] = 2 total components
Understanding the Visualization
1
Build lookup table
Convert nums array to hash set for fast lookups
2
Traverse the chain
Walk through linked list checking each node
3
Count sequences
Increment counter when starting new component
Key Takeaway
🎯 Key Insight: Use a hash set for O(1) lookups and count components by tracking when we start new consecutive sequences from nums in the linked list traversal.
Asked in
Google 15 Amazon 12 Meta 8 Microsoft 6
28.4K Views
Medium Frequency
~15 min Avg. Time
892 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen