当前位置: 首页 > news >正文

128最长连续序列

解决思路:用hashset存储num数组后遍历 最终时间复杂度为o(n)

hashset

HashSet 是 Java 编程语言中的一个类,它实现了 Set 接口,用于存储不包含重复元素的集合。以下是 HashSet 的一些关键特点:

  1. 不包含重复元素HashSet 中不允许有重复的元素。如果试图添加一个已经存在的元素,HashSet 将不会进行任何操作。

  2. 无序集合HashSet 不保证元素的顺序。这意味着元素插入的顺序与它们被迭代或输出的顺序可能不同。

  3. 基于哈希表实现HashSet 底层使用哈希表来存储元素,这使得它具有非常快的查找、添加和删除操作,平均时间复杂度为 O(1)。

  4. 非线程安全HashSet 不是线程安全的,如果多个线程同时访问并修改 HashSet,必须通过外部同步来保证线程安全。

  5. 允许包含一个 null 元素:在 HashSet 中可以包含一个 null 元素。

  6. 迭代顺序是不确定的:由于 HashSet 是基于哈希表实现的,所以迭代顺序是不确定的,并且可能会在不同的 JVM 运行中变化。

st.contains() 方法是 Set 接口的一个方法,用于检查指定的集合 st 是否包含某个特定的元素。这里的 st 是一个 Set 类型的对象,而 contains() 方法接受一个参数,这个参数是你想要检查是否存在于集合中的对象。

class Solution {

    public int longestConsecutive(int[] nums) {

           //最长序列数

                int target=0;

                //将全部的数放入hashset中

                Set<Integer> set=new HashSet<>();

                for (int num : nums) {

                    set.add(num);

                }

                for (int x : set) {

                    //如果集合中的数小于当前数 继续走

                    if (set.contains(x-1)) {

                        continue;

                    }

                    //定义y为x的下一个数

                    int y =x+1;

                    //不断判断下一个数是否在集合中

                    while (set.contains(y)) {

                        y++;

                    }

                    //循环结束后 y-x是最后一个在哈希集合中的数

                    target=Math.max(target, y-x);

                }

                return target;

    }

}


主要思考点 用hashset存储 在hashset中 遍历并判断当前数的下一位是否比当前要大 如果大 那就加一继续判断 如果小于 那就跳出 换下一个数继续遍历 

第一个增强for是用来找起点  

  • for (int x : st) {:这行代码定义了一个循环,它将遍历集合 st 中的每个整数,每次迭代将集合中的一个元素赋值给变量 x

  • if (st.contains(x - 1)) { continue; }:这行代码检查集合 st 是否包含 x - 1。如果包含,这意味着 x 不是连续序列的起点,因为它前面还有其他数字。因此,使用 continue 语句跳过当前迭代,继续下一次迭代。

相关文章:

  • 【力扣 - 简单题】88. 合并两个有序数组
  • 【AI实践】deepseek支持升级git
  • JVM-Java程序的运行环境
  • 华为小艺助手接入DeepSeek,升级鸿蒙HarmonyOS NEXT即可体验
  • 时间序列分析(四)——差分运算、延迟算子、AR(p)模型
  • springboot整合mybatis-plus【详细版】
  • Mybatis高级
  • 利用亚马逊云科技RDS for SQL Server配置向量数据存储
  • ubuntu20.04声音设置
  • 使用EVE-NE-锐捷实现NAT+ACL服务限制
  • DeepSeek 助力 Vue 开发:打造丝滑的开关切换(Switch)
  • 系统思考—慢就是快
  • 解锁二进制数组:JS、TS、ArkTS 解析
  • Dubbo 的注册中心详解:从选择到故障处理
  • Servlet中,WebServlet注解的使用方法
  • 《On Java中文版基础卷+进阶卷》
  • QT笔记——QPlainTextEdit
  • 双指针专题2:最长连号
  • 【界面黑科技->构建异形不规则动态界面应用程序】
  • Kotlin 2.1.0 入门教程(二十)扩展
  • 汕头违建豪宅“英之园”将强拆,当地:将根据公告期内具体情况采取下一步措施
  • 中国创面修复学科发起者之一陆树良教授病逝,享年64岁
  • 智能手表眼镜等存泄密隐患,国安部提醒:严禁在涉密场所使用
  • OpenAI与微软正谈判修改合作条款,以推进未来IPO
  • 何谓“战略稳定”:“长和平”的实现基础与机制
  • 第12届警博会在即:一批便民利企装备亮相,规模创历史新高