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++题解链表组件的资料请关注脚本之家其它相关文章!

相关文章

  • 使用spring工厂读取property配置文件示例代码

    使用spring工厂读取property配置文件示例代码

    这篇文章主要介绍了使用spring工厂读取property配置文件示例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Java Spring Controller 获取请求参数的几种方法详解

    Java Spring Controller 获取请求参数的几种方法详解

    这篇文章主要介绍了Java Spring Controller 获取请求参数的几种方法详解的相关资料,这里提供了6种方法,需要的朋友可以参考下
    2016-12-12
  • Spring中的@EnableConfigurationProperties使用方式以及作用详解

    Spring中的@EnableConfigurationProperties使用方式以及作用详解

    这篇文章主要介绍了Spring中的@EnableConfigurationProperties使用方式以及作用详解,使用了 @ConfigurationProperties 注解的配置类生效,将该类注入到 IOC 容器中,交由 IOC 容器进行管理,此时则不用再配置类上加上@Component,需要的朋友可以参考下
    2024-01-01
  • Spring Boot项目中如何对接口请求参数打印日志

    Spring Boot项目中如何对接口请求参数打印日志

    在SpringBoot项目中,打印接口请求参数有多种方法,如使用AOP、控制器建议、拦截器、@ModelAttribute、SpringBootActuator、日志框架的MDC、自定义过滤器和SpringWebflux,这些方法有助于API调试和监控,但需注意隐私和敏感信息安全
    2024-10-10
  • Idea打不了断点如何解决

    Idea打不了断点如何解决

    这篇文章主要介绍了Idea打不了断点如何解决的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java读取txt文件代码片段

    java读取txt文件代码片段

    这篇文章主要为大家详细介绍了java读取txt文件的代码片段,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 教你用JAVA写文本编辑器(三)

    教你用JAVA写文本编辑器(三)

    这篇文章主要给大家介绍了关于用JAVA写文本编辑器的相关资料,本文主要实现的是一个点击选择文本格式的窗口,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • Java网络编程之IO模型阻塞与非阻塞简要分析

    Java网络编程之IO模型阻塞与非阻塞简要分析

    这篇文章主要介绍Java网络编程中的IO模型阻塞与非阻塞简要分析,文中附有示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • 解决mybatis中的mapper命名问题

    解决mybatis中的mapper命名问题

    这篇文章主要介绍了解决mybatis中的mapper命名问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • SpringBoot框架的MD5加密方式

    SpringBoot框架的MD5加密方式

    这篇文章主要介绍了SpringBoot框架的MD5加密方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论