【5分钟力扣】674. 最长连续递增序列(python3实现)

文章目录

    • 一、前言
    • 二、题目
    • 三、解法思路
    • 四、 代码实例

一、前言

如果放弃太早,你永远都不知道自己会错过什么。

每天五分钟,看懂一道简单、中等难度的算法题,尽可能将复杂的题讲清楚。

疯狂学习python中,2020-07-17更新

【5分钟力扣】674. 最长连续递增序列(python3实现)_第1张图片

二、题目

给定一个未经排序的整数数组,找到最长且连续的的递增序列,并返回该序列的长度。

示例 1:

输入: [1,3,5,4,7]
输出: 3
解释: 最长连续递增序列是 [1,3,5], 长度为3。
尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。

示例 2:

输入: [2,2,2,2,2]
输出: 1
解释: 最长连续递增序列是 [2], 长度为1。

限制:

数组长度不会超过10000。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

三、解法思路

这题采用的思路:新设置一个数组保存每一个位置的递增子序列长度,然后对新数组元素进行排序,得到最大值。

图示:
【5分钟力扣】674. 最长连续递增序列(python3实现)_第2张图片

四、 代码实例

from typing import List

nums = [1, 3, 5, 4, 2, 3, 4, 5]
class Solution:
    def findLengthOfLCIS(self, nums: List[int]) -> int:
        n = len(nums)
        if n <= 0:
            return 0
        
        #  新数组用来记录nums连续递增序列长度
        dp = [1] * n
        for i in range(1, n):
            if nums[i] > nums[i - 1]:
                dp[i] = dp[i - 1] + 1
        return max(dp)

if __name__ == '__main__':
    obj = Solution()
    obj.findLengthOfLCIS(nums)

【5分钟力扣】674. 最长连续递增序列(python3实现)_第3张图片

你可能感兴趣的:(金鞍少年的刷题之路,leetcode,算法,最长连续递增序列,python算法题)