【算法】【线性表】【数组】最长连续序列
1 题目
给定一个未排序的整数数组num
,找出最长连续序列的长度。
样例 1:
输入:
num = [100, 4, 200, 1, 3, 2]
输出:
4
解释:这个最长的连续序列是 [1, 2, 3, 4]. 返回所求长度 4
2 解答
public class Solution { /** * @param num: A list of integers * @return: An integer */ public int longestConsecutive(int[] num) { // write your code here // 1、当数组为空或者无元素时 if (num == null || num.length == 0) { return 0; } // 2、将num放置进set中用于快速判断 Set<Integer> numSet = new HashSet<>(num.length); for (int i : num) { numSet.add(i); } int res = 1; for (int i : num) { // 从下、上判断当前的连续性 // remove 是关键 能降低复杂度 int down = i - 1; int up = i + 1; int acc = 1; while (numSet.contains(down)) { acc++; numSet.remove(down); down--; } while (numSet.contains(up)) { acc++; numSet.remove(up); up++; } res = Math.max(res, acc); } return res; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了