首页 > 其他分享 >817. 链表组件

817. 链表组件

时间:2022-10-12 01:11:58浏览次数:76  
标签:head nums int 列表 链表 组件 817

817. 链表组件

给定链表头结点 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 <= 104
  • 0 <= Node.val < n
  • Node.val 中所有值 不同
  • 1 <= nums.length <= n
  • 0 <= nums[i] < n
  • nums 中所有值 不同
    /**
     * Definition for singly-linked list.
     * type ListNode struct {
     *     Val int
     *     Next *ListNode
     * }
     */
    func numComponents(head *ListNode, nums []int) (ans int) {
        set := make(map[int]struct{}, len(nums))
        for _, v := range nums {
            // 这里的结构体就是集合,将列表放入集合中即无序(底层存储实际应与链表顺序一致,由小到大)
            set[v] = struct{}{}
        }
        for inSet := false; head != nil; head = head.Next {
            if _, ok := set[head.Val]; !ok {
                inSet = false
            } else if !inSet {
                inSet = true
                ans++
            }
        }
        return
    }
    

     题目关键点:列表为链表的子集,找到含它最长子链表的总个数。最长即指(0,1,2)必须算一个。

标签:head,nums,int,列表,链表,组件,817
From: https://www.cnblogs.com/fulaien/p/16783145.html

相关文章

  • Vue里面父组件嵌套子组件的生命周期
     最常见的4种状态1.Creation2.Mounting3.Updating4.Unmouting 通常create用来放API的如果是在Mount是挂载后操作DOM的   我们搞清楚他的生命周期顺序,父......
  • 数据结构 链表(第7、8天)
    链表这里面的链表题比较简单,只要会遍历链表、删除链表节点、反转链表这些基本操作就行。必要时可以画图辅助理解。141.环形链表给定一个链表,判断是否有环。思路:快慢指......
  • 好用的组件收藏
    播放器播放条斗鱼、Youtobe等https://web-streaming.github.io/ppbar/使用使用ppbar,需要导入ProgressBar类和ppbar的样式。importProgressBarfrom'ppbar';......
  • //按照完全二叉树的层次顺序一次输入节点信息建立二叉链表的算法
    //按照完全二叉树的层次顺序一次输入节点信息建立二叉链表的算法#include<stdio.h>#include<stdlib.h>typedefcharDataType;typedefstructnode{DataT......
  • 算法每日一题(反转单链表)C语言版
     在本篇文章里,我将分享一道很经典的算法题———反转链表,并且分享多种方法去解决方法,希望可以帮助到你......
  • 公共组件的显示与隐藏
     Footer组件显示与隐藏显示或者隐藏组件:v-if|v-showFooter组件:在Home,Search显示Footer组件Footer组件:在登陆,注册时候隐藏的 1.我们可以根据组件身上的$route......
  • 「Java 数据结构」:手撕单链表的增删改查及大厂面试题。
    目录​​一、单链表的增删改查​​​​1、创建结点     ​​​​2、单链表的添加操作​​​​3、单链表的删除操作​​​​4、单链表的有效结点的个数​​​​二、......
  • 链表结构
    链表一、链表的分类1.1单项链表每个node节点指向下一个节点。然后有个head节点指向第一个节点,尾节点指向null。也可以有个last节点指向最后一个节点。这样能快速获取......
  • 使用element ui的el-upload组件上传图片,记录一下
    使用elementui的el-upload组件上传图片效果预览下面是实现效果,接口方面是把有两个接口,一个接口上传图片,传参是图片和路径,返回值是路径。另一个接口是上传表单内容(用户,......
  • Vu3.x如何给v-for循环出来的输入框绑定v-mode的值,以及实现父子组件传值、双向绑定
    观前须知:本人演示使用的input是自己手敲的,如果使用的是element-ui等表单组建的input框请选择性参考,不保证我的方法对你们也完全有效。父组件代码:这里我的MiniInput是以组......