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