zoukankan      html  css  js  c++  java
  • 0128. Longest Consecutive Sequence (M)

    Longest Consecutive Sequence (M)

    题目

    Given an unsorted array of integers nums, return the length of the longest consecutive elements sequence.

    You must write an algorithm that runs in O(n) time.

    Example 1:

    Input: nums = [100,4,200,1,3,2]
    Output: 4
    Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.
    

    Example 2:

    Input: nums = [0,3,7,2,5,8,4,6,0,1]
    Output: 9 
    

    Constraints:

    • 0 <= nums.length <= 10^5
    • -10^9 <= nums[i] <= 10^9

    题意

    给定一个数组,从中选择若干数字组成序列,使该序列中的数字依次递增加一,求满足的最长的序列。

    思路

    O(N)方法:先将所有数存入HashSet中,利用HashSet找到每一个满足序列的第一个数字(即找到数字num,使得num在set中,但num-1不在set中),从该数字出发求出整个序列的长度。实际上每个数字被访问了两次,复杂度为O(N)。


    代码实现

    Java

    class Solution {
        public int longestConsecutive(int[] nums) {
            int ans = 0;
            Set<Integer> set = new HashSet<>();
    
            for (int num : nums) {
                set.add(num);
            }
    
            for (int num : set) {
                if (set.contains(num - 1)) continue;
    
                int cnt = 1;
                while (set.contains(num + 1)) {
                    cnt++;
                    num++;
                }
    
                ans = Math.max(ans, cnt);
            }
    
            return ans;
        }
    }
    
  • 相关阅读:
    ab并发负载压力测试
    在vmware里运行qcow2镜像
    nginx root alias
    速成制作rpm包
    oracle分区表按时间自动创建
    Some network Tools
    python中defaultdict用法详解
    CENTOS7 安装telnet
    H3C 交换机配置
    H3C
  • 原文地址:https://www.cnblogs.com/mapoos/p/14856468.html
Copyright © 2011-2022 走看看