[LeetCode] 817. 链表组件

67 阅读1分钟

817.链表组件

思路

首先采集题目信息:

  • nums中的分组不需要是连续子数组
  • nums中不会有重复的,且链表中节点的val都不相同

首先,要判断节点是否在nums肯定要遍历链表,nums仅做判断作用且没有重复元素,可以转化为集合操作。当链表中的元素从来没有在nums中出现时,我们不开始计数。链表结束,但是set中还存在元素时,组件数量应加1,可以初始1开始计数。

AC,代码如下。

代码

python3

class Solution:
    def numComponents(self, head: Optional[ListNode], nums: List[int]) -> int:
        node = head
        s = set(nums)
        res = 1
        start = 0
        while len(s) > 0 and node is not None:
            if node.val in s:
                start = 1
                s.remove(node.val)
            else:
                if start == 1:
                    res += 1
                    start = 0
            node = node.next
        return res