链表组件
题目链接:链表组件
/**
* 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) {
vector<bool> hashNum(10005,false);
for(int i=0;i<G.size();i++){
hashNum[G[i]] = true;
}
int ans = 0;
ListNode *p,*q;
p = head;
while(p){
//cout << " p = " << p->val << endl;
if(hashNum[p->val]){
ans ++;
//存在列表中,探索下一个
q = p->next;
while(q && hashNum[q->val]) q = q->next; //连续的
p = q;
}else{
//不存在列表中,不符合组件的定义
p = p->next;
}
}
return ans;
}
};