zoukankan      html  css  js  c++  java
  • [leetcode-128] 最长连续序列

    给定一个未排序的整数数组,找出最长连续序列的长度。

    要求算法的时间复杂度为 O(n)

    示例:

    输入: [100, 4, 200, 1, 3, 2]
    输出: 4
    解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。

    如果不要求算法的时间复杂度为 O(n),排序后遍历即可。沒想出怎么解,看了思路后AC如下,主要是用到Hash映射
    public class LongestConsecutiveSequence {
        public int longestConsecutive(int[] num) {
            //也可以用一个HashMap,Set是一个只包含键值的特殊Map
            Set<Integer> set = new HashSet<>();
            for(int n : num) {
                set.add(n);
            }
            int max = 1;
            for (int n : num) {
                if (set.contains(n)) {
                    int cur = n;
                    int temp = 1;
                    while(set.contains(--cur)) {
                        temp = temp + 1;
                        set.remove(n);
                    }
                    cur = n;
                    while(set.contains(++cur)) {
                        temp = temp + 1;
                        set.remove(n);
                    }
                    if (temp>max) {
                        max = temp;
                    }
                }
            }
            return max;
        }
    }
     
  • 相关阅读:
    Kafka Eagle安装
    CentOS下OpenJDK设置JAVA_HOME
    设计模式:解释器模式
    Typora主题推荐
    SpringMVC的<mvc:annotation-driven />
    SpringMVC的视图解析器
    数字化营销
    《计算广告》第二版思维导图
    舆情计算
    实时数仓
  • 原文地址:https://www.cnblogs.com/twoheads/p/10572461.html
Copyright © 2011-2022 走看看