Leetcode•Jul 11, 2025
Linked List Components
Hazrat Ali
Leetcode
You are given the head
of a linked list containing unique integer values and an integer array nums
that is a subset of the linked list values.
Return the number of connected components in nums
where two values are connected if they appear consecutively in the linked list.
Example 1:
Input: head = [0,1,2,3], nums = [0,1,3] Output: 2 Explanation: 0 and 1 are connected, so [0, 1] and [3] are the two connected components.
Example 2:
Input: head = [0,1,2,3,4], nums = [0,3,1,4] Output: 2 Explanation: 0 and 1 are connected, 3 and 4 are connected, so [0, 1] and [3, 4] are the two connected components.
Solution
/**
* @param {ListNode} head
* @param {number[]} G
* @return {number}
*/
const numComponents = (head, G) => {
const set = new Set(G);
let count = 0;
let node = head;
while (node) {
if (set.has(node.val)) {
count++;
while (node && set.has(node.val)) {
node = node.next;
}
} else {
node = node.next;
}
}
return count;
};