Java C++题解leetcode817链表组件示例

 更新时间:2022年10月12日 15:11:56   作者:AnjaVon  
这篇文章主要为大家介绍了Java C++题解leetcode817链表组件示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目要求

思路:模拟

Java

class Solution {
    public int numComponents(ListNode head, int[] nums) {
        int res = 0;
        Set<Integer> set = new HashSet<>();
        for (int x : nums)
            set.add(x); // 转存nums
        while (head != null) {
            if (set.contains(head.val)) {
                while (head != null && set.contains(head.val))
                    head = head.next;
                res++;
            }
            else {
                head = head.next;
            }
        }
        return res;
    }
}
  • 时间复杂度:O(n),遍历整个链表
  • 空间复杂度:O(n),转存nums

C++

class Solution {
public:
    int numComponents(ListNode* head, vector<int>& nums) {
        int res = 0;
        unordered_set<int> set(nums.begin(), nums.end()); // 转存nums
        while (head) {
            if (set.count(head->val)) {
                while (head && set.count(head->val))
                    head = head->next;
                res++;
            }
            else {
                head = head->next;
            }
        }
        return res;
    }
};
  • 时间复杂度:O(n),遍历整个链表
  • 空间复杂度:O(n),转存nums

Rust

use std::collections::HashSet;
impl Solution {
    pub fn num_components(mut head: Option<Box<ListNode>>, nums: Vec<i32>) -> i32 {
        let mut head = head.as_ref();
        let mut res = 0;
        let mut status = false; // 是否处于同一个组件
        while let Some(node) = head {
            if nums.contains(&node.val) {
                if !status {
                    res += 1;
                    status = true;
                }
            } else {
                status = false;
            }
            head = node.next.as_ref();
        }
        res
    }
}
  • 时间复杂度:O(n),遍历整个链表
  • 空间复杂度:O(n),转存nums

总结

简单模拟题,没想到转存用哈希表的内置函数,还想着要排序方便查找……对于消耗空间的方法总是不太敏感。

以上就是Java C++题解leetcode817链表组件示例的详细内容,更多关于Java C++题解链表组件的资料请关注脚本之家其它相关文章!

相关文章

  • 使用ElasticSearch6.0快速实现全文搜索功能的示例代码

    使用ElasticSearch6.0快速实现全文搜索功能的示例代码

    本篇文章主要介绍了使用ElasticSearch6.0快速实现全文搜索功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • IDEA报错:Process terminated的问题及解决

    IDEA报错:Process terminated的问题及解决

    这篇文章主要介绍了IDEA报错:Process terminated的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 详解SpringBoot如何自定义Starter

    详解SpringBoot如何自定义Starter

    Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。本文将介绍SpringBoot如何自定义Starter,感兴趣的可以学习一下
    2021-12-12
  • JAVA操作elastic search的详细过程

    JAVA操作elastic search的详细过程

    Elasticsearch Rest High Level Client 是 Elasticsearch 官方提供的一个 Java 客户端库,用于与 Elasticsearch 进行交互,本文介绍JAVA操作elastic search的详细过程,感兴趣的朋友一起看看吧
    2024-08-08
  • Java中冒泡排序的原生实现方法(正序与逆序)

    Java中冒泡排序的原生实现方法(正序与逆序)

    这篇文章主要给大家介绍了关于Java中冒泡排序的原生实现方法(正序与逆序)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • java自定义注解实现前后台参数校验的实例

    java自定义注解实现前后台参数校验的实例

    下面小编就为大家带来一篇java自定义注解实现前后台参数校验的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • JavaWeb使用Session和Cookie实现登录认证

    JavaWeb使用Session和Cookie实现登录认证

    本篇文章主要介绍了JavaWeb使用Session和Cookie实现登录认证,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • Java中RedissonClient基本使用指南

    Java中RedissonClient基本使用指南

    RedissonClient 是一个强大的 Redis 客户端,提供了丰富的功能和简单的 API,本文就来介绍一下Java中RedissonClient基本使用指南,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Springboot实现多线程及线程池监控

    Springboot实现多线程及线程池监控

    线程池的监控很重要,本文就来介绍一下Springboot实现多线程及线程池监控,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • IDEA常量字符串过长问题及解决方案

    IDEA常量字符串过长问题及解决方案

    在编译Java项目时遇到“常量字符串过长”错误,可以通过修改编译器设置解决,具体方法是进入IDE的设置(File>>Settings>>Build, Execution, Deployment>>Compiler>>Java Compiler),将使用的编译器更改为Eclipse,如果问题依旧
    2024-10-10

最新评论