0817. Linked List Components #
题目 #
给定链表头结点 head
,该链表上的每个结点都有一个 唯一的整型值。同时给定列表 nums
,该列表是上述链表中整型值的一个子集。
返回列表 nums
中组件的个数,这里对组件的定义为:链表中一段最长连续结点的值(该值必须在列表 nums
中)构成的集合。
思路 #
代码 #
public class ListNode {
int val;
ListNode next;
ListNode() {}
ListNode(int val) { this.val = val; }
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}
class Solution {
public int numComponents(ListNode head, int[] nums) {
Set<Integer> set = new HashSet<>();
for(int x: nums) set.add(x);
boolean flag = false;
int num = 0;
ListNode ptr = head;
while (ptr != null) {
if (set.contains(ptr.val) == true) {
if (flag == false) flag = true;
}
else {
if (flag == true) num += 1;
flag = false;
}
ptr = ptr.next;
}
if (flag == ture) num += 1;
return num;
}
}