817. 链表组件
給定一個(gè)鏈表(鏈表結(jié)點(diǎn)包含一個(gè)整型值)的頭結(jié)點(diǎn)?head。
同時(shí)給定列表?G,該列表是上述鏈表中整型值的一個(gè)子集。
返回列表?G?中組件的個(gè)數(shù),這里對(duì)組件的定義為:鏈表中一段最長(zhǎng)連續(xù)結(jié)點(diǎn)的值(該值必須在列表?G?中)構(gòu)成的集合。
示例?1:
輸入:?
head: 0->1->2->3
G = [0, 1, 3]
輸出: 2
解釋:?
鏈表中,0 和 1 是相連接的,且 G 中不包含 2,所以 [0, 1] 是 G 的一個(gè)組件,同理 [3] 也是一個(gè)組件,故返回 2。
示例 2:
輸入:?
head: 0->1->2->3->4
G = [0, 3, 1, 4]
輸出: 2
解釋:?
鏈表中,0 和 1 是相連接的,3 和 4 是相連接的,所以 [0, 1] 和 [3, 4] 是兩個(gè)組件,故返回 2。
注意:
如果?N?是給定鏈表?head?的長(zhǎng)度,1 <= N <= 10000。
鏈表中每個(gè)結(jié)點(diǎn)的值所在范圍為?[0, N - 1]。
1 <= G.length <= 10000
G 是鏈表中所有結(jié)點(diǎn)的值的一個(gè)子集.
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/linked-list-components
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
解法:
class Solution { public:int numComponents(ListNode* head, vector<int>& G) {int res = 0;unordered_set<int> nodeSet(G.begin(), G.end());while (head) {if (nodeSet.count(head->val) && (!head->next || !nodeSet.count(head->next->val))) {++res;}head = head->next;}return res;} };?
總結(jié)
- 上一篇: 652. 寻找重复的子树
- 下一篇: 987. 二叉树的垂序遍历