0817. Linked List Components

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