Leetcode 817.链表组件
Time: 20190903
Type: Medium
题目描述
给定一个链表(链表结点包含一个整型值)的头结点 head。
同时给定列表 G,该列表是上述链表中整型值的一个子集。
返回列表 G 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的值(该值必须在列表 G 中)构成的集合。
示例 1:
输入:
head: 0->1->2->3
G = [0, 1, 3]
输出: 2
解释:
链表中,0 和 1 是相连接的,且 G 中不包含 2,所以 [0, 1] 是 G 的一个组件,同理 [3] 也是一个组件,故返回 2。
示例 2:
输入:
head: 0->1->2->3->4
G = [0, 3, 1, 4]
输出: 2
解释:
链表中,0 和 1 是相连接的,3 和 4 是相连接的,所以 [0, 1] 和 [3, 4] 是两个组件,故返回 2。
注意:
如果 N 是给定链表 head 的长度,1 <= N <= 10000。
链表中每个结点的值所在范围为 [0, N - 1]。
1 <= G.length <= 10000
G 是链表中所有结点的值的一个子集.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/linked-list-components
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
遍历链表时去查询数字是否出现在G中,如果连续出现,则指针也后移,计数不加。
问题是,如果直接问元素是否在G中,结果会超时,换用集合来比较就可以了。
集合增删查改的平均复杂度是O(1),底层实现方式是带有空值的字典。
代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = Noneclass Solution:def numComponents(self, head: ListNode, G: List[int]) -> int:if not head:return 0_set = set()for num in G:_set.add(num)count = 0while head:val = head.valif val in _set:count += 1while val in _set and head.next:head = head.nextval = head.valhead = head.nextreturn count
set的in比list的in要快很多。
END.
Leetcode 817.链表组件相关推荐
- LeetCode 817. 链表组件
1. 题目 给定一个链表(链表结点包含一个整型值)的头结点 head. 同时给定列表 G,该列表是上述链表中整型值的一个子集. 返回列表 G 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的 ...
- if 组件是否存在_LeetCode 817. 链表组件 题解
817. 链表组件 题解 题目描述 解法:哈希表 思路 本题的关键在于给定某个特定的值,如何能够快速地确定该值是否存在于列表G中.容易想到可以采用哈希表的方式存储列表G中的各个元素以方便查找.而由于这 ...
- 【精】LintCode领扣算法问题答案:1371. 链表组件
1371. 链表组件 描述 给定一个链表(链表结点包含一个整型值)的头结点 head. 同时给定列表 G,该列表是上述链表中整型值的一个子集. 返回列表 G 中组件的个数,这里对组件的定义为:链表中一 ...
- leetcode算法题--链表组件
原题链接:https://leetcode-cn.com/problems/linked-list-components/ 线性扫描 int numComponents(ListNode* head, ...
- Leetcode中单链表题总结
以下是个人对所做过的LeetCode题中有关链表类型题的总结,博主小白啊,若有错误的地方,请留言指出,谢谢. 一.有关反转链表 反转链表是在单链表题中占很大的比例,有时候,会以各种形式出现在题中,是比 ...
- LeetCode 2130. 链表最大孪生和(链表快慢指针+反转链表+双指针)
文章目录 1. 题目 2. 解题 1. 题目 在一个大小为 n 且 n 为 偶数 的链表中,对于 0 <= i <= (n / 2) - 1 的 i ,第 i 个节点(下标从 0 开始)的 ...
- LeetCode 1019. 链表中的下一个更大节点(单调栈)
1. 题目 给出一个以头节点 head 作为第一个节点的链表.链表中的节点分别编号为:node_1, node_2, node_3, - . 每个节点都可能有下一个更大值(next larger va ...
- LeetCode 382. 链表随机节点(概率)
1. 题目 给定一个单链表,随机选择链表的一个节点,并返回相应的节点值.保证每个节点被选的概率一样. 进阶: 如果链表十分大且长度未知,如何解决这个问题?你能否使用常数级空间复杂度实现? 来源:力扣( ...
- 【LeetCode 单链表专项】反转链表II(92)
文章目录 1. 题目 1.1 示例 1.2 说明 1.3 限制 1.4 进阶 2. 解法一(穿针引线) 2.1 分析 2.2 解答 2.3 复杂度 3. 解法二(头插法) 3.1 分析 3.2 解答 ...
最新文章
- 【Python】turtle库的小应用
- 从Spring-Session源码看Session机制的实现细节
- 一个完整的 Web 请求到底发生了什么
- go基本数据类型与运算符
- [CQOI2011]放棋子 题解(dp+组合数学)
- python可以在windows运行吗_在Windows中,如何运行这个python脚本呢?
- Private Bytes,Working Set,Virtual Size的区别
- 洛谷P1141 01迷宫【bfs】
- 人体如何区分阴虚和阳虚?
- 新手配置Intel NUC8i5INH的Ubuntu 16.04 时无法上网
- 欲练神功必先自宫,String 自宫后“不可变性”到底有啥好处?
- 计算机毕业设计(附源码)python智慧医疗系统
- REVIT建模“族类别和族参数”中的“总是垂直”“基于工作平面”怎么用?
- 使用VBA如何将中文字符转换为区位码
- 继戴姆勒之后 德国公司Bury就汽车通信相关专利授权投诉诺基亚
- 新的放假规定,大年三十还得朝九晚五!
- OSChina 周六乱弹 ——手机进化史?程序员用啥手机?
- 【干货】零基础如何学习网站建设
- 智能家居视觉信息安全
- CALIPSO数据产品总结