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. 链表组件 题解相关推荐

  1. LeetCode 817. 链表组件

    1. 题目 给定一个链表(链表结点包含一个整型值)的头结点 head. 同时给定列表 G,该列表是上述链表中整型值的一个子集. 返回列表 G 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的 ...

  2. Leetcode 817.链表组件

    Time: 20190903 Type: Medium 题目描述 给定一个链表(链表结点包含一个整型值)的头结点 head. 同时给定列表 G,该列表是上述链表中整型值的一个子集. 返回列表 G 中组 ...

  3. 【精】LintCode领扣算法问题答案:1371. 链表组件

    1371. 链表组件 描述 给定一个链表(链表结点包含一个整型值)的头结点 head. 同时给定列表 G,该列表是上述链表中整型值的一个子集. 返回列表 G 中组件的个数,这里对组件的定义为:链表中一 ...

  4. vue 如何处理两个组件异步问题_Vue动态异步组件实现思路及其问题

    前言:在vue 官方资料中,我们可以可以很学会如何通过vue构建"动态组件"以及"异步组件",然而,在官方资料中,并没有涉及到真正的"动态异步&quo ...

  5. C#组件系列——又一款日志组件:Elmah的学习和分享

    前言:好久没动笔了,都有点生疏,12月都要接近尾声,可是这月连一篇的产出都没有,不能坏了"规矩",今天还是来写一篇.最近个把月确实很忙,不过每天早上还是会抽空来园子里逛逛.一如既往 ...

  6. vue中子组件和子组件之间怎么通信_vue.js组件之间如何通信?

    vue.js组件之间如何通信?下面本篇文章就来给大家介绍一下Vue.js组件间通信方式.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 平时在使用Vue框架的业务开发中,组件不仅仅要 ...

  7. java获取焦点的组件_JAVA组件焦点的特性:获取组件时其顶层组件必须为可见的...

    JAVA组件焦点的特性:其组件的顶层祖先必须为可见的. requestFocus,requestFocusInWindow等这些方法在获取组件焦点时都提到了: 请求此 Component 获取输入焦点 ...

  8. android组件化架构 书,Android MVVM组件化架构方案

    MVVMHabitComponent 关于Android的组件化,相信大家并不陌生,网上谈论组件化的文章,多如过江之鲫,然而一篇基于MVVM模式的组件化方案却很少.结合自身的调研和探索,在此分享一篇基 ...

  9. win2008在组件服务中未找到office组件服务

    在win2003系统,cmd中输入 dcomcnfg ,组件服务里面找到office的组件服务,但win2008 R2 64位操作系统需要输入comexp.msc -32 tks:http://www ...

最新文章

  1. 派生类参数初始化列表和基类构造函数顺序
  2. 阿里员工在用的黑科技 今年云栖要公开了!
  3. java短横线转驼峰_第二讲:Java的运作原理
  4. python查询mysql 乱码_python查询mysql中文乱码问题
  5. 小米android系统耗电量大,小米手机耗电快的解决方法,亲测有效~
  6. 消息中间件:RocketMQ 介绍(特性、术语、原理、优缺点、消息顺序、消息重复)
  7. 服务器需要指定dns吗,Windows Server2012 安装配置DNS服务器方法详解
  8. python编程(指针)
  9. 中英文组织机构名过滤
  10. 如何使用Python numpy.where()方法
  11. 计算机二级公共知识总结,计算机二级公共基础知识考点总结
  12. Java基础:继承的综合案例 —— 群主发普通红包
  13. 【静态ip保姆级教程他来了】
  14. centos7离线安装wget
  15. 计算机网络对社会发展的影响
  16. 台式计算机连接wifi适配器遇到问题,台式机连接wifi不稳定怎么办_台式电脑接wifi会不稳定解决方法-win7之家...
  17. 了解Maven的<relativePath/>标签
  18. ActiveMQ的基础
  19. SQLite WAL 机制探索
  20. 骄傲狮子座的感情世界(图

热门文章

  1. 可以自定义公式的计算器_Excel万能个税计算器,税率对比显示,自定义增税点自动计算结果...
  2. android x86 sleep,如何打开Android X86对houdini的支持
  3. java web 常用工具类_Javaweb常用工具类及配置文件备份
  4. sap甲方_带你走进SAP项目实施过程——前言
  5. python redis分布式锁_Python 使用 Redis 实现分布式锁
  6. android 透明主题 crash,Android 8.0 的填坑(透明的activity崩溃)
  7. 链路两段不同网段怎么通信_为什么不同网段不能通信(转)
  8. python string转int_Python int与string之间的转化
  9. mysql运行一下自己就停_MySQL运行一段时间后自动停止问题的排查
  10. 访问订单列表时报错404