## Algorithm

Problem Name: 817. Linked List Components

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.
```

Constraints:

• The number of nodes in the linked list is `n`.
• `1 <= n <= 104`
• `0 <= Node.val < n`
• All the values `Node.val` are unique.
• `1 <= nums.length <= n`
• `0 <= nums[i] < n`
• All the values of `nums` are unique.

## Code Examples

### #1 Code Example with Java Programming

```Code - Java Programming```

``````
class Solution {
public int numComponents(ListNode head, int[] G) {
int numOfComponents = 0;
Set < Integer> set = Arrays.stream(G).boxed().collect(Collectors.toSet());
while (head != null && !set.isEmpty()) {
}
numOfComponents++;
} else {
}
}
return numOfComponents;
}
}
``````
Copy The Code &

Input

cmd
head = [0,1,2,3], nums = [0,1,3]

Output

cmd
2

### #2 Code Example with Python Programming

```Code - Python Programming```

``````
class Solution:
"""
:type G: List[int]
:rtype: int
"""
num_connected = 0
set_g = set(G)
continue
num_connected += 1
return num_connected
``````
Copy The Code &

Input

cmd
head = [0,1,2,3], nums = [0,1,3]

Output

cmd
2