链表组件

题目链接:链表组件


/**
 * 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;
    }
};
posted @ 2020-09-26 11:28  focusDing  阅读(121)  评论(0编辑  收藏  举报