企业营销网站开发建设专家福建响应式网站制作

张小明 2026/3/2 20:13:43
企业营销网站开发建设专家,福建响应式网站制作,路灯东莞网站建设,贵阳网站建设策划方案#x1f4dd; 前言今天在刷 LeetCode 热题 100 时#xff0c;碰到了第 128 题 “最长连续序列”。这是一道非常经典的题目#xff0c;考察的重点是如何在不排序的情况下#xff0c;利用哈希表在 O(n) 的时间复杂度内完成查找。乍一看这道题如果用 Arrays.sort() 排序后遍历… 前言今天在刷 LeetCode 热题 100 时碰到了第 128 题“最长连续序列”。这是一道非常经典的题目考察的重点是如何在不排序的情况下利用哈希表在 O(n) 的时间复杂度内完成查找。乍一看这道题如果用Arrays.sort()排序后遍历时间复杂度是 O(nlog n)但这道题明确要求O(n)所以必须换一种思路。记录一下我的解题心得和最终代码。 题目描述给定一个未排序的整数数组nums找出数字连续的最长序列不要求序列元素在原数组中连续的长度。示例 1输入 nums [100,4,200,1,3,2]输出 4解释 最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。提示请设计并实现时间复杂度为 O(n) 的算法。 解题思路1. 为什么不能排序题目硬性要求时间复杂度为 O(n)。我们知道标准的排序算法如快排、归并最快也是 O(nlog n)所以排序这条路走不通。我们需要一种能够快速查找的数据结构哈希表 (HashSet)是最佳选择。2. 核心逻辑去重与定位“起点”我们可以分两步走去重与存储先把所有数字放入HashSet中这样我们不仅去除了重复元素还能在 O(1) 的时间内判断一个数是否存在。寻找序列起点如果我们对集合中的每一个数x都去尝试向后枚举 (x1,x2...)时间复杂度最坏会达到 O(n^2)。关键优化点我们只从序列的起点开始查找。如何判断起点如果一个数x它的前驱x-1不在集合中那么x一定是某个连续序列的第一个数。只有当x是起点时我们才开始向后匹配x1,x2等等统计长度。3. 一个小优化在统计过程中如果当前找到的最长序列长度已经超过了哈希表中剩余元素的一半或者总数的一半其实就可以提前结束循环了因为剩下的元素数量不可能凑出更长的序列。 代码实现 (Java)代码相比官方题解做了变量名的语义化修改使其更符合工程规范方便阅读。class Solution { public int longestConsecutive(int[] nums) { // 1. 预处理将数组元素放入 HashSet实现去重和 O(1) 查询 SetInteger numSet new HashSet(); for (int num : nums) { numSet.add(num); } int maxLen 0; int totalNums numSet.size(); // 2. 遍历集合中的每个元素 for (int num : numSet) { // 核心剪枝逻辑 // 只有当 num-1 不存在时num 才是一个连续序列的【起点】 // 如果 num-1 存在说明 num 已经被计算过了直接跳过 if (!numSet.contains(num - 1)) { int currentNum num; int currentLen 1; // 从起点开始不断向后寻找连续的数字 while (numSet.contains(currentNum 1)) { currentNum 1; currentLen 1; } // 更新最大长度 maxLen Math.max(maxLen, currentLen); // 【可选优化】如果当前找到的长度已经超过总数的一半 // 那么剩下的元素不可能组成更长的序列直接退出 if (maxLen totalNums / 2) { break; } } } return maxLen; } } 复杂度分析时间复杂度O(n)虽然代码里有一个while循环嵌套在for循环里但仔细分析会发现由于if (!numSet.contains(num - 1))的限制数组中的每个数最多只会被访问两次一次是作为序列起点被访问一次是作为序列的一部分被内部while访问。因此总的操作次数是线性的。空间复杂度O(n)我们需要一个HashSet来存储数组中的元素以空间换时间。 总结这道题是哈希表运用的典范。解决很多 O(n) 复杂度问题的秘诀往往就在于“如何避免重复计算”。在这道题里通过判断x-1是否存在精准地锁定了每个序列的头部从而避免了大量的无效枚举。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设的行业代码是多少能源网站模板

01 学术写作的新困境与时代解方 📝 在当今的科研环境中,学者们普遍面临着多重压力:海量文献需要筛选,创新点难以挖掘,数据可视化技术要求高,格式调整耗时耗力,更别提那令人焦虑的查重关卡。 传…

张小明 2026/1/20 17:55:04 网站建设

网站主题旁边的图标怎么做源码时代培训机构

在全球科技竞争与情报博弈日益激烈的当下,学术科研领域正成为APT(高级持续性威胁)组织的重点攻击目标。2025年10月,卡巴斯基实验室披露了一起由Forum Troll APT组织发起的精准钓鱼攻击事件:该组织伪装成俄罗斯知名学术…

张小明 2026/1/20 17:54:33 网站建设

西安网站制作sxyun首页wordpress主题

Windows应用开发:用户界面与交互全解析 1. 用户界面创建 1.1 应用栏相关要点 在应用开发中,应用栏的设计至关重要。以下是一些关键知识点和操作建议: - 功能按钮位置 : - 搜索功能 :页面内搜索可通过应用栏中的按钮实现,点击该按钮会弹出搜索框用于搜索文本。 …

张小明 2026/1/20 17:54:02 网站建设

找个网页公司做网站建筑用模板多少钱一块

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2026/1/20 17:53:31 网站建设

自己买服务器搭建网站百度推广没有效果怎么办

目录 手把手教你学Simulink--风电电机控制场景实例:基于Simulink的鼠笼式异步风电机组定子磁链定向控制仿真 一、引言:为什么做鼠笼式异步风电机组定子磁链定向控制?——恒速风电的“效率引擎” 挑战: 二、核心原理&#xff1a…

张小明 2026/1/20 17:53:01 网站建设

做网站内存最小源码注册公司流程和费用最新

在气动控制系统中常常会用到各种磁性传感器(如图1所示),分无触点式和有触点式两种类型。这种传感器为了便于安装在不同的气缸上都作得很精致小巧,但大多都没有保护电路,只要不小心反接电源或有输出短路时都会损坏传感器…

张小明 2026/1/24 18:59:47 网站建设