题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个链表和一个数组,链表中的每个节点都是唯一值的整数,数组中有链表的子集,求链表中连续的在数组中的节点块数(组件数)。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def numComponents(self, head: Optional[ListNode], nums: List[int]) -> int:
# 用标志位
flag = False
ans = 0
rec = Counter(nums)
while head:
if rec[head.val] > 0:
flag = True
elif flag:
flag = False
ans += 1
head = head.next
return ans + (1 if flag else 0)

# 第一版答案
# first, last = head, head
# com_num = 0
# rec = Counter(nums)
# while first and last:
# while first and rec[first.val] == 0:
# first = first.next

# if first:
# com_num += 1
# last = first
# while last and rec[last.val] > 0:
# last = last.next

# if last:
# last = last.next
# first = last

# return com_num