leetcode 817. Linked List Components

原创 2018年04月15日 22:02:45

leetcode 817. Linked List Components


原题地址:https://leetcode.com/problems/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 head, 1 <= 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.

python代码

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def numComponents(self, head, G):
        """
        :type head: ListNode
        :type G: List[int]
        :rtype: int
        """
        if head == None:
            return 0
        h = ListNode(0)
        h.next = head
        li = []
        while h.next != None:
            li.append(h.next.val)
            h = h.next

        dic = {}
        for i in range(len(li)):
            dic[li[i]] = i

        G1 = [dic[i] for i in G]
        G1.sort()
        if len(G1) == 1:
            return 1
        else:
            num = 1
            for i in range(len(G1)-1):
                if G1[i+1]-G1[i] != 1:
                    num+=1
            return num

版权声明:转载注明 http://blog.csdn.net/birdreamer/article/details/79954042

817-Linked List Components

Description: We are given head, the head node of a linked list containing unique integer values. W...
  • LaputaFallen
  • LaputaFallen
  • 2018年04月15日 18:48
  • 23

[Leetcode-142] Linked List Cycle II(链表有环详细分析)

环的长度是多少? 如何找到环中第一个节点(即Linked List Cycle II)? 如何将有环的链表变成单链表(解除环)? 如何判断两个单链表是否有交点?如何找到第一个相交的节点?...
  • xy010902100449
  • xy010902100449
  • 2015年10月09日 09:33
  • 1577

(Leetcode 142)Linked List Cycle (II) (快慢指针详解)

Leetcode141题和142题很相似,都涉及到了快慢指针的算法。快慢指针就是设置两个指针,一个快指针,一个慢指针来达到解题的目的。下面分为以下几个模块来讲解: 解第141题解第142题为什么快...
  • willduan1
  • willduan1
  • 2016年03月20日 21:05
  • 8931

leetcode 234 Palindrome Linked List C++

得到链表后半段的首地址,然后翻转,然后依次比较即可。 ListNode* reverseList(ListNode* head){ ListNode * pre = NULL...
  • a2331046
  • a2331046
  • 2016年06月11日 15:00
  • 362

LeetCode 206. Reverse Linked List 题解(C++)

Reverse a singly linked list.
  • prayyojay
  • prayyojay
  • 2016年10月23日 16:18
  • 235

leetcode 206: Reverse Linked List

Reverse Linked List leetcode
  • xudli
  • xudli
  • 2015年05月14日 06:47
  • 13879

LeetCode206:Reverse Linked List

Reverse a singly linked list. click to show more hints. Hint: A linked list can be reversed either...
  • u012501459
  • u012501459
  • 2015年07月30日 11:22
  • 1415

leetcode 234: Palindrome Linked List

leetcode 234: Palindrome Linked List python, java, c++
  • xudli
  • xudli
  • 2015年07月14日 04:40
  • 8301

LeetCode(237)Delete Node in a Linked List

题目Write a function to delete a node (except the tail) in a singly linked list, given only access to ...
  • fly_yr
  • fly_yr
  • 2015年08月15日 21:32
  • 1074

LeetCode206之Reverse Linked List Java题解

题目: Reverse a singly linked list. 解题: 采用最直接的思路,从链表的第二个节点开始向后遍历,将每一个遍历的节点插入作为当前的第一个节点,为了方便操作,我们定义一个f...
  • u012249528
  • u012249528
  • 2015年05月05日 16:15
  • 1109
收藏助手
不良信息举报
您举报文章:leetcode 817. Linked List Components
举报原因:
原因补充:

(最多只允许输入30个字)