if 组件是否存在_LeetCode 817. 链表组件 题解
817. 链表组件 题解
题目描述
解法:哈希表
思路
本题的关键在于给定某个特定的值,如何能够快速地确定该值是否存在于列表G
中。容易想到可以采用哈希表的方式存储列表G
中的各个元素以方便查找。而由于这个存储的结构不需要是有序的,因此我们可以采用unordered_map
的结构。
在将列表G
存储成哈希表后,原问题的解决思路其实就是:遍历链表,分别检查每个结点的值是否存在于我们建立的哈希表中,并记录组件的个数。
实现细节
先将列表G
中的每个元素加入哈希表,之后开始遍历链表中的每个结点,并注意检查该结点的值是否存在于哈希表中。每次一个组件结束的时候,都要给记录组件数量的变量加1,最后返回该变量即可。
代码
class Solution {public: int numComponents(ListNode* head, vector<int>& G) { if(!head) return 0; unordered_set<int> set; for(int i=0; i//将列表G构建为哈希表 set.insert(G[i]); int num = 0, len = 0; //num表示组件的个数,len表示当前组件的长度 ListNode *p = head; while(p) //遍历链表 { if(set.find(p->val) != set.end()) //如果当前遍历到的结点存在于列表中 len++; else //当前遍历到的结点不在列表中 { if(len!=0) //上一个组件刚刚结束,需要让组件数加1,组件长度归零 { num++; len = 0; } } p = p->next; } if(len!=0) //如果链表中最后一个结点仍处于最后一个组件内,则循环内少加了一次组件个数 num++; return num; }};
复杂度分析
设链表中共有个结点,列表中共有G
个元素。
时间复杂度:
空间复杂度:
if 组件是否存在_LeetCode 817. 链表组件 题解相关推荐
- LeetCode 817. 链表组件
1. 题目 给定一个链表(链表结点包含一个整型值)的头结点 head. 同时给定列表 G,该列表是上述链表中整型值的一个子集. 返回列表 G 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的 ...
- Leetcode 817.链表组件
Time: 20190903 Type: Medium 题目描述 给定一个链表(链表结点包含一个整型值)的头结点 head. 同时给定列表 G,该列表是上述链表中整型值的一个子集. 返回列表 G 中组 ...
- 【精】LintCode领扣算法问题答案:1371. 链表组件
1371. 链表组件 描述 给定一个链表(链表结点包含一个整型值)的头结点 head. 同时给定列表 G,该列表是上述链表中整型值的一个子集. 返回列表 G 中组件的个数,这里对组件的定义为:链表中一 ...
- vue 如何处理两个组件异步问题_Vue动态异步组件实现思路及其问题
前言:在vue 官方资料中,我们可以可以很学会如何通过vue构建"动态组件"以及"异步组件",然而,在官方资料中,并没有涉及到真正的"动态异步&quo ...
- C#组件系列——又一款日志组件:Elmah的学习和分享
前言:好久没动笔了,都有点生疏,12月都要接近尾声,可是这月连一篇的产出都没有,不能坏了"规矩",今天还是来写一篇.最近个把月确实很忙,不过每天早上还是会抽空来园子里逛逛.一如既往 ...
- vue中子组件和子组件之间怎么通信_vue.js组件之间如何通信?
vue.js组件之间如何通信?下面本篇文章就来给大家介绍一下Vue.js组件间通信方式.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 平时在使用Vue框架的业务开发中,组件不仅仅要 ...
- java获取焦点的组件_JAVA组件焦点的特性:获取组件时其顶层组件必须为可见的...
JAVA组件焦点的特性:其组件的顶层祖先必须为可见的. requestFocus,requestFocusInWindow等这些方法在获取组件焦点时都提到了: 请求此 Component 获取输入焦点 ...
- android组件化架构 书,Android MVVM组件化架构方案
MVVMHabitComponent 关于Android的组件化,相信大家并不陌生,网上谈论组件化的文章,多如过江之鲫,然而一篇基于MVVM模式的组件化方案却很少.结合自身的调研和探索,在此分享一篇基 ...
- win2008在组件服务中未找到office组件服务
在win2003系统,cmd中输入 dcomcnfg ,组件服务里面找到office的组件服务,但win2008 R2 64位操作系统需要输入comexp.msc -32 tks:http://www ...
最新文章
- 派生类参数初始化列表和基类构造函数顺序
- 阿里员工在用的黑科技 今年云栖要公开了!
- java短横线转驼峰_第二讲:Java的运作原理
- python查询mysql 乱码_python查询mysql中文乱码问题
- 小米android系统耗电量大,小米手机耗电快的解决方法,亲测有效~
- 消息中间件:RocketMQ 介绍(特性、术语、原理、优缺点、消息顺序、消息重复)
- 服务器需要指定dns吗,Windows Server2012 安装配置DNS服务器方法详解
- python编程(指针)
- 中英文组织机构名过滤
- 如何使用Python numpy.where()方法
- 计算机二级公共知识总结,计算机二级公共基础知识考点总结
- Java基础:继承的综合案例 —— 群主发普通红包
- 【静态ip保姆级教程他来了】
- centos7离线安装wget
- 计算机网络对社会发展的影响
- 台式计算机连接wifi适配器遇到问题,台式机连接wifi不稳定怎么办_台式电脑接wifi会不稳定解决方法-win7之家...
- 了解Maven的<relativePath/>标签
- ActiveMQ的基础
- SQLite WAL 机制探索
- 骄傲狮子座的感情世界(图
热门文章
- 可以自定义公式的计算器_Excel万能个税计算器,税率对比显示,自定义增税点自动计算结果...
- android x86 sleep,如何打开Android X86对houdini的支持
- java web 常用工具类_Javaweb常用工具类及配置文件备份
- sap甲方_带你走进SAP项目实施过程——前言
- python redis分布式锁_Python 使用 Redis 实现分布式锁
- android 透明主题 crash,Android 8.0 的填坑(透明的activity崩溃)
- 链路两段不同网段怎么通信_为什么不同网段不能通信(转)
- python string转int_Python int与string之间的转化
- mysql运行一下自己就停_MySQL运行一段时间后自动停止问题的排查
- 访问订单列表时报错404