zoukankan      html  css  js  c++  java
  • 817. Linked List Components

    We are given head, the head node of a linked list containing unique integer values.

    We are also given the list G, a subset of the values in the linked list.

    Return the number of connected components in G, where two values are connected if they appear consecutively in the linked list.

    Example 1:

    Input: 
    head: 0->1->2->3
    G = [0, 1, 3]
    Output: 2
    Explanation: 
    0 and 1 are connected, so [0, 1] and [3] are the two connected components.
    

    Example 2:

    Input: 
    head: 0->1->2->3->4
    G = [0, 3, 1, 4]
    Output: 2
    Explanation: 
    0 and 1 are connected, 3 and 4 are connected, so [0, 1] and [3, 4] are the two connected components.
    

    Note: 

    • If N is the length of the linked list given by head1 <= N <= 10000.
    • The value of each node in the linked list will be in the range [0, N - 1].
    • 1 <= G.length <= 10000.
    • G is a subset of all values in the linked list.

    c++代码

    /**
     * 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) {
            int res=0;
            set<int> s;
            for(auto&g: G)
                s.insert(g);
            bool enter=false;
            //bool leave=false;
            while(head){
                if(s.find(head->val)!=s.end())
                {
                    if(enter==false)
                    {
                        enter=true;
                        res+=1;
                    }
                    
                }else
                {
                    enter=false;
                }
                head=head->next;
            }
            return res;
        }
    };

    python代码

    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution(object):
        def numComponents(self, head, G):
            """
            :type head: ListNode
            :type G: List[int]
            :rtype: int
            """
            cnt=0
            enter=False
            while head is not None:
                if head.val in G:
                    if not enter:
                        enter=True
                        cnt+=1
                else:
                    enter=False
                #print "head.val: {}, cnt: {}".format(head.val,cnt)
                    
                head=head.next
                
            return cnt
                        
            
  • 相关阅读:
    The&nbsp;library&nbsp;contains&nbsp;native&nbsp;libr…
    DHCP configurations in Ubuntu
    如何编译Linux Kernel
    Rsync 使用指南
    Linux下用semaphore来做进程间互斥
    How to generate patch file?
    PS3MediaServer(用于PS3的DLNA server) 在Ubuntu 9.10上的安装和配置
    嘉猪的最爱 PS3
    梦寐以求的SPL总冠军,KT你赢了
    PLU space in 优酷
  • 原文地址:https://www.cnblogs.com/learning-c/p/9271599.html
Copyright © 2011-2022 走看看