LeetcodeJul 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;
};


Comments