`

Longest Consecutive Sequence

阅读更多
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.

For example,
Given [100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4.

Your algorithm should run in O(n) complexity.

题目要求我们用O(n)的时间复杂度来解决,我们可以采用并查集的思想,当扫描到一个元素,我们从当前元素的两边开始处理,如果连续的都进行标记,同时维护一个最大值,再次扫描的时候如果被标记过的就可以跳过,这样我们就可以在O(n)的时间复杂度下找到最长的连续序列。代码如下:
public class Solution {
    public int longestConsecutive(int[] nums) {
        if(nums == null) return 0;
        HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
        int max = 1;
        for(int i : nums) hm.put(i, 0);
        
        for(int i = 0; i < nums.length; i++) {
            int count = 1;
            int left = -1;
            int right = 1;
            if(hm.get(nums[i]) == 1) continue;
            hm.put(nums[i], 1);
            while(hm.containsKey(nums[i] + left)) {
                hm.put(nums[i] + left, 1);
                count ++;
                left --;
            }
            while(hm.containsKey(nums[i] + right)) {
                hm.put(nums[i] + right, 1);
                count ++;
                right ++;
            }
            max = Math.max(max, count);
        }
        return max;
    }
}
分享到:
评论

相关推荐

    js-leetcode题解之128-longest-consecutive-sequence.js

    其中,问题编号128的“最长连续序列”(Longest Consecutive Sequence)是其中的一个经典问题。该问题要求编写一个函数,找出数组中未排序的最长连续元素序列的长度。针对这一问题,使用JavaScript编写一个高效的解法...

    2018年最新Google Onsite面经总结1

    Binary Tree Longest Consecutive Sequence等。这类题目通常要求读者使用树的各种操作来解决问题,例如树的遍历、查找、插入等操作。 4. 图类题目 图类题目是LeetCode原题中的一个复杂类题目,本文中涵盖了多个图...

    python-leetcode题解之128-Longest-Consecutive-Sequence

    print(longest_consecutive([100, 4, 200, 1, 3, 2])) # 输出应为4 ``` 以上代码就完整地解决并展示了如何找到一个无序数组中的最长连续序列问题。通过巧妙的算法设计与数据结构应用,我们成功将时间复杂度降低到O...

    10个最常见的Java算法.doc

    合并排序数组, Valid Parentheses, 实现 strStr(), Set Matrix Zeroes, 搜索插入位置, Longest Consecutive Sequence, Valid Palindrome, 螺旋矩阵, 搜索一个二维矩阵, 旋转图像, 三角形, Distinct Subsequences ...

    LeetCode题解(java语言实现).pdf

    * Longest Consecutive Sequence Java:该题目要求找到最长的连续序列,实现方法使用了哈希表和迭代算法。 * Search a 2D Matrix:该题目要求在二维矩阵中查找元素,实现方法使用了二分查找算法。 * Rotate Image:...

    python-leetcode面试题解之第128题最长连续序列-题解.zip

    LeetCode的第128题,名为"Longest Consecutive Sequence",要求找到给定无序整数数组中,最长的连续整数序列的长度。例如,对于输入数组 [100, 4, 200, 1, 3, 2],最长连续序列是 [1, 2, 3, 4],其长度为4。 首先,...

    lrucacheleetcode-LeetCode:这个库用于总结leetcode中遇到的习题,期望按照数据结构和常用方法分成2类,进行总结,

    Consecutive Sequence 7 Two Sum Hash,夹逼均可 8 3Sum Hash法转换2sum 9 3Sum Closest Sort +夹逼法 10 4Sum Sort +夹逼法 11 Remove Element 12 Next Permutation 公式 13 Permutation Sequence 公式 14 Valid ...

    LeetCodeAgri.zip

    4. **动态规划**:动态规划是一种用于求解最优化问题的策略,如"爬楼梯"(Climbing Stairs)和"最长连续序列"(Longest Consecutive Sequence)。通过构建状态转移方程,我们可以用递归或迭代的方式求解问题。 5. *...

    LeetCode刷题题解答案(c++).pdf 彻底搞懂了编程算法题,成功拿到了大厂offer!

    4. **最长连续序列(Longest Consecutive Sequence)** - **问题描述**:给定一个未排序的整数数组,找出最长连续序列的长度。 - **解决方案**: - 使用哈希集合存储数组中的所有元素。 - 遍历数组中的每个元素...

    javalruleetcode-SDE-Problems:标准SDE问题列表

    java lru leetcode SDE-问题 标准 SDE 问题列表 第一天:(数组) 日 问题陈述 解决方案 困难 使用的数据结构 使用的算法 时间复杂度 空间复杂度 ...Longest Consecutive Sequence Longest Subarray w

    leetcode中文版

    2. **2.1.6 Longest Consecutive Sequence**:给定一个未排序的整数数组,找出其中最长连续序列的长度。 3. **2.1.7 Two Sum**:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个...

    leetcode-cpp刷题

    - **2.1.6 Longest Consecutive Sequence** - 找出数组中最长的连续子序列。 - 实现思路:可以使用哈希表存储每个元素及其连续状态,然后遍历数组找到最长的连续序列。 - **2.1.7 Two Sum** - 寻找数组中两个数...

    leetcode正方体堆叠-TakeUforward-SDE_180:TakeUforward-SDE_180

    leetcode正方体收藏TakeUforward-SDE_180 要了解整个列表和其他内容,如项目、简历、如何进行面试……观看整个视频: 在以下位置找到展示位置系列: ...Consecutive Sequence Longest Subarray with 0 sum 给定

    LeetCode最全代码

    ...The number of questions is increasing recently. Here is the classification of all `468` questions. ...I'll keep updating for full summary and better solutions....|-----|---------------- | --------------- |...

    longest-consecutive-sequence

    最长连续序列 描述 给定一个未排序的整数数组,请找出最长的连续元素序列的长度。 好吧,假设该任务仅与步长等于1的序列有关。 例如: 给定exampleArray = [100, 4, 200, 1, 3, 2] 100,4,200,1,3,2 [100, 4, ...

    Leetcode:此回购包含Leetcode问题的解决方案

    此外,"Leetcode-main"可能还包含了其他挑战,如“最长连续序列”(Longest Consecutive Sequence)来演示如何使用集合进行有效的状态追踪,或者“最大子数组和”(Maximum Subarray)来展示动态规划的应用。每个问题的...

    leetcode:LeetCode练习

    5. **动态规划**:如“最长连续序列”(Longest Consecutive Sequence),要求找到一个无序整数数组中最长的连续子序列。 6. **回溯法**:如“全排列”(Permutations),要求列出所有可能的数组排列。 7. **堆和队列*...

    leetcode卡-LeetCode-HashTable:此存储库包含HashTable探索卡中所有问题的解决方案

    5. **滑动窗口最大值/最小值**:例如“数组中的最长连续序列”(Longest Consecutive Sequence),哈希表可以帮助我们快速查询元素及其相邻元素的状态,从而找到最长连续序列。 6. **统计问题**:如“数组中出现...

Global site tag (gtag.js) - Google Analytics