AC代码

class Solution {
    /**
     * 因为题目说链表节点值是不重复的,所以可以用HashSet存储数组中元素,便于查询
     * flag 变量表示当前元素是否属于某个集合,true: 当前元素属于某个集合(组件), false: 不属于某个集合(组件)
     * @param head
     * @param nums
     * @return
     */
    public int numComponents(ListNode head, int[] nums) {

        Set<Integer> set = new HashSet<>();
        for (int num : nums) {
            set.add(num);
        }
        boolean flag = false;
        int ans = 0;
        while (head != null) {
            if (!set.contains(head.val)) {
                flag = false;
            }
            if (set.contains(head.val) && !flag) {
                ans++;
                flag = true;
            }

            head = head.next;
        }

        return ans;
    }
}