leetcode 817. 链表组件(java)

news2024/9/25 3:24:29

链表组件

  • 题目描述
    • HashSet 模拟

题目描述

给定链表头结点 head,该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 nums,该列表是上述链表中整型值的一个子集。
返回列表 nums 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的值(该值必须在列表 nums 中)构成的集合。

示例1:
在这里插入图片描述
输入: head = [0,1,2,3], nums = [0,1,3]
输出: 2
解释: 链表中,0 和 1 是相连接的,且 nums 中不包含 2,所以 [0, 1] 是 nums 的一个组件,同理 [3] 也是一个组件,故返回 2。

示例2:
在这里插入图片描述
输入: head = [0,1,2,3,4], nums = [0,3,1,4]
输出: 2
解释: 链表中,0 和 1 是相连接的,3 和 4 是相连接的,所以 [0, 1] 和 [3, 4] 是两个组件,故返回 2。

提示:
链表中节点数为n
1 <= n <= 10^4
0 <= Node.val < n
Node.val 中所有值 不同
1 <= nums.length <= n
0 <= nums[i] < n
nums 中所有值 不同

在这里插入图片描述

HashSet 模拟

根据题意进行模拟即可 : 为了方便判断某个node.val 是否存在于 nums 中,我们先使用 Set 结构对所有的 nums[i] 进行转存,随后每次检查连续段(组件)的个数。

代码演示:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public int numComponents(ListNode head, int[] nums) {
        Set<Integer>set = new HashSet<>();
        int count = 0;
        //方便进行判断,如果用数组判断,那么每次都要循环,这个优化很重要。
        for(int x : nums){
            set.add(x);
        }
        while(head != null){
          if(set.contains(head.val)){
            while(head != null && set.contains(head.val)){
                head = head.next;
            }
            count++;
          }else{
              head = head.next;
          }
        }
        return count;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1019439.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我学编程全靠B站了,真香(第二期)

你好&#xff0c;我是Martin。 上次给大家推荐了不少B站上的好视频&#xff0c;看得出来还是有不少B站大学的校友的&#xff0c;哈哈哈。 本来说这期给大家接着推荐我收藏和看过的国外视频的&#xff0c;上篇文章下有朋友留言说想要看点Go语言的视频。 我就合计着这期就把Pyth…

酷开系统带你解锁假期居家的正确“姿势”!

在难得的周末假期中&#xff0c;你是否也希望自己的生活变得更加多彩呢&#xff1f;在闲暇时间里&#xff0c;你是否计划好了如何度过&#xff1f;小朋友们自然希望能够有父母陪伴在身边&#xff0c;而大朋友们也希望能给这个时节留下不一样的回忆。不论你对生活的期待是什么&a…

网站发布到谷歌 被谷歌收录

1.robote.txt 以下是个最简单的模板 肯定不出错 User-agent: * Disallow: /backend/ Disallow: /app/ Disallow: /asyn/ Disallow: /weixinmp/ 2.生成sitemap.XML Sitemap Details - XML Sitemaps Generator 3.meta信息 在谷歌https://search.google.com/里申请 <meta na…

较难理解的字符串查找算法KMP

时间复杂度O(n)的子串查找算法。 经典实例 主字符串(s)&#xff1a;abcabcabd 模式串(t)&#xff1a;abcabd 比较次数 主字符串 模式串 备注 一 abcabcabd abcabd 红色和绿色表示正在比较的子串&#xff0c;红色表示不同部分&#xff0c;绿色表示相同部分。…

知识联合——函数指针数组

前言&#xff1a;小伙伴们又见面啦&#xff0c;今天我们来讲解一个将函数&#xff0c;指针&#xff0c;数组这三个C语言大将整合在一起的知识——函数指针数组。同时来告诉小伙伴们我们上一篇文章的伏笔——函数指针的具体用法。 目录 一.什么是函数指针数组 二.函数指针数组…

【Java】全套云HIS(医院信息管理系统)源码包含EMR、LIS

云HIS系统简介 SaaS模式Java版云HIS系统源码&#xff0c;在公立二甲医院应用三年&#xff0c;经过多年持续优化和打磨&#xff0c;系统运行稳定、功能齐全&#xff0c;界面布局合理、操作简便。 1、融合B/S版电子病历系统&#xff0c;支持电子病历四级&#xff0c;HIS与电子病…

linux下centos7升级python版本

由于项目需要使用爬虫&#xff0c;爬虫框架支撑3.8以上版本。而linux自带的python版本是2.7.*&#xff0c;所以需要升级python版本至3.8 键脚本安装Python3.6-Python3.10 bash <(curl -sSL https://raw.githubusercontent.com/midoks/choose-linux-python/main/install.sh…

MySql入门到精通,优化,

Mysql概述 1.数据库相关概念 1.数据库&#xff1a;数据存储的仓库 2.数据库管理系统&#xff1a;操作和管理数据库的大型软件。&#xff08;DBMS&#xff09; 3.SQL&#xff1a;操作关系型数据库的编程语言&#xff0c;是一套标准。 都要使用SQL操作语言&#xff08;统一标准…

左神高级进阶班3(TreeMap顺序表记录线性数据的使用, 滑动窗口的使用,前缀和记录结构, 可能性的舍弃)

目录 【案例1】 【题目描述】 【思路解析】 【代码实现】 【案例2】 【题目描述】 【思路解析】 【代码实现】 【案例3】 【题目描述】 【思路解析】 【代码实现】 【案例4】 【题目描述】 【思路解析】 【代码实现】 【案例1】 【题目描述】 【思路解析】 这里…

vue-cli init vue3

安装 cli npm i -g vue/cli4.5.13查看版本&#xff1a;vue -V升级版本&#xff1a;npm update -g vue/cli 初始化项目 vue create 项目名称 > - ? Please pick a preset:Default ([Vue 2] babel, eslint)Default (Vue 3) ([Vue 3] babel, eslint) > Manually selec…

什么是HTML5中的Web存储API,包括LocalStorage和SessionStorage?它们的区别是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Web存储API和区别⭐ LocalStorage&#xff08;本地存储&#xff09;⭐ SessionStorage&#xff08;会话存储&#xff09;⭐ 区别⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff0…

HTTP状态码301(永久重定向)不同Web服务器的配置方法

文章目录 301状态码通常在那些情况下使用301永久重定向配置Nginx配置301永久重定向Windows配置IIS301永久重定向PHP下的301重定向Apache服务器实现301重定向 301重定向是否违反相关法规&#xff1f;推荐阅读 当用户或搜索引擎向服务器发出浏览请求时&#xff0c;服务器返回的HT…

腾讯轻联:带你创造属于自己的AI小助手

陈老老老板&#x1f934; &#x1f9d9;‍♂️本文专栏&#xff1a;生活&#xff08;主要讲一下自己生活相关的内容&#xff09;生活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f9d9;‍♂️本文简述&#xff1a;参加腾讯全球数字生态大会&#xff0c;了解到腾讯轻联企业…

LLM(一)| 百川智能baichuan7B、13B、53B以及baichuan2总结

之前在文章baichuan-53B VS ChatGLM-6B对比中做过百川大模型53B和ChatGLM 6B模型的效果对比&#xff0c;由于百川大模型的内测模型是53B&#xff0c;因此本次对比参数量差异较大&#xff0c;但仍然可以看到两个模型的效果。百川大模型在benchmark上有超越ChatGLM和LLaMA的迹象&…

《DevOps实践指南》- 读书笔记(六)

DevOps实践指南 Part 4 第二步 &#xff1a;反馈的技术实践17. 将假设驱动的开发和A/B测试融入日常工作17.1 A/B 测试简史17.2 在功能测试中集成 A/B 测试17.3 在发布中集成 A/B 测试17.4 在功能规划中集成 A/B 测试17.5 小结 18. 建立评审和协作流程以提升当前工作的质量18.1 …

内存映射-

内存映射区不会堵塞 父子进程之间通信 /*#include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);作用&#xff1a;将一个文件或者设备的数据映射到内存中参数&#xff1a;- addr&#xff1a;NULL- length&#xff1…

计算机毕设 flink大数据淘宝用户行为数据实时分析与可视化

文章目录 0 前言1、环境准备1.1 flink 下载相关 jar 包1.2 生成 kafka 数据1.3 开发前的三个小 tip 2、flink-sql 客户端编写运行 sql2.1 创建 kafka 数据源表2.2 指标统计&#xff1a;每小时成交量2.2.1 创建 es 结果表&#xff0c; 存放每小时的成交量2.2.2 执行 sql &#x…

双喜临门 | 开源网安SFuzz在谷歌FuzzBench中夺魁,并获得CWE国际认证

​近日&#xff0c;开源网安模糊测试平台SFuzz于上半年推出的“灰盒代码模糊测试系统”&#xff0c;经过数月的不断调优&#xff0c;在谷歌的FuzzBench基准测试中脱颖而出&#xff0c;荣登榜首。此外&#xff0c;SFuzz还成功获得了CWE国际兼容性认证&#xff0c;进一步巩固了其…

警报:新的 Kubernetes 漏洞可对 Windows 端点实施远程攻击

不久前&#xff0c;研究人员在 Kubernetes 中发现的三个可被利用并相互关联的高危安全漏洞&#xff0c;这些漏洞可在集群内的 Windows 端点上以提升权限的方式实现远程代码执行。 这些漏洞被标记为 CVE-2023-3676、CVE-2023-3893 和 CVE-2023-3955&#xff0c;CVSS 评分为 8.8…

第73步 时间序列建模实战:多步滚动预测 vol-1(以决策树回归为例)

基于WIN10的64位系统演示 一、写在前面 上一期&#xff0c;我们讲了单步滚动预测&#xff0c;一次只预测一个值。 既然有单步&#xff0c;有没有多步呢&#xff1f;那肯定有&#xff0c;这一期来介绍多步滚动预测。 然而&#xff0c;多步滚动模型也可以有不同的步骤&#x…