zoukankan      html  css  js  c++  java
  • leetcode刷题笔记一百二十八题 最长连续序列

    leetcode刷题笔记一百二十八题 最长连续序列

    源地址:128. 最长连续序列

    问题描述:

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

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

    示例:

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

    //本题主要使用Hash的结构特性缩短查找时间
    //整个查找过程基于currentNum-1是否存在,如果存在则跳过因为在找到currentNum-1时会进行处理
    //否则 currentNum应该为一串序列的首个数字,继续查找后续的数字是否存在
    //直到整个序列查完即可
    import scala.collection.mutable
    object Solution {
        def longestConsecutive(nums: Array[Int]): Int = {
            val HSet = mutable.HashSet[Int]()
            var longestStreak = 0
            
            for (num <- nums) HSet.add(num)
            
            for (num <- HSet){
                if (HSet.contains(num-1) == false){
                    var currentNum = num
                    var currentStreak = 1
                    while (HSet.contains(currentNum+1) == true){
                        currentNum += 1
                        currentStreak += 1
                    }
                    longestStreak = Math.max(longestStreak, currentStreak) 
                }
            }
            return longestStreak
        }
    }
    
  • 相关阅读:
    [CF149D] Coloring Brackets(区间dp)
    [CF1437E] Make It Increasing(LIS)
    洛谷试题之跳石头
    【模板】深搜和广搜
    高精度阶乘
    【模板】拓扑排序
    【模板】最小生成树——Kruskal算法
    判断素数的方法
    高精度乘法
    高精度加法
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13511207.html
Copyright © 2011-2022 走看看