zoukankan      html  css  js  c++  java
  • 【LeetCode】128. 最长连续序列

    题目

    给定一个未排序的整数数组,找出最长连续序列的长度、
    要求算法的时间复杂度为O(n).

    示例

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

    思路

    思路一

    1. 先由小到大进行排序
    2. 考虑三种情况:
      1. 前后相差1,则是连续序列
      2. 前后相等,循环continue
      3. 最后一个元素,break

    代码

    
    def longestConsecutive(nums) -> int:
        if nums:
            nums.sort()
            #print(nums)
            ans = [] #储存最大序列
            max_seq = 1
            for i, val in enumerate(nums):
                #print("序号:%s 值:%s"%(i, val)) 序号从零开始
                if(i == len(nums) - 1):
                    ans.append(max_seq)
                    break;
                if(nums[i] == nums[i+1]):
                    continue
                if(nums[i] - nums[i+1] == -1):
                    max_seq += 1
                else:
                    ans.append(max_seq)
                    max_seq = 1
            return max(ans)
        else:
            return 0
    if __name__ == "__main__":
        nums = [100, 4, 200, 1, 3, 2]
        print(longestConsecutive(nums))
    
  • 相关阅读:
    java中数据库通用层
    java中dao层的通用层,通过反射机制,操作数据库的增删改,适用的范围是不包含属性类
    反射,类,构造方法,方法,属性
    如何求组合数(逆元)
    Go Home
    Dubious Document
    Factors of Factorial
    Lining Up
    AtCoDeer and Rock-Paper
    Boxes and Candies
  • 原文地址:https://www.cnblogs.com/wemo/p/10522002.html
Copyright © 2011-2022 走看看