Day25: [LeetCode中等] 817. 链表组件
题源:
来自leetcode题库:
https://leetcode-cn.com/problems/linked-list-components/
思路:
就是先把vector里的整数都放在set里,然后遍历链表,一旦有组件中的值,就计数加一,然后把组件邻近值越过。
代码:
dirty code凑合看吧
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
int numComponents(ListNode* head, vector<int>& G) {
if(!head) return 0;
unordered_set<int> se;
for(auto i:G){
se.insert(i);
}
int res=0;
while(head){
if(se.find(head->val)!=se.end()){
head=head->next;
while(head){
if(se.find(head->val)==se.end()) break;
head=head->next;
}
res++;
}
if(head) head=head->next;
}
return res;
}
};