菜鸟系列 Golang 实战 Leetcode —— 300. 最长上升子序列

Posted i-dandan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了菜鸟系列 Golang 实战 Leetcode —— 300. 最长上升子序列相关的知识,希望对你有一定的参考价值。

300.最长上升子序列

给定一个无序的整数数组,找到其中最长上升子序列的长度。

示例:

输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。
说明:

可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。
你算法的时间复杂度应该为 O(n2) 。
进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?

题解

采用动态规划算法:d[i]=d[j]+1 if j<i&&nums[j]<nums[i]

func lengthOfLIS(nums []int) int {
    var length = len(nums)
    if length<=1{
        return length
    }
    var d = make([]int,length)
    d[0]=1
    var max =d[0]
    for i:=1;i<length;i++{
        d[i]=1
        for j:=0;j<i;j++{
            if nums[j]<nums[i]{
                if d[i]<d[j]+1{
                    d[i]=d[j]+1
                }
            }
        }
        if max<d[i]{
            max=d[i]
        }
    }
    return max
}

以上是关于菜鸟系列 Golang 实战 Leetcode —— 300. 最长上升子序列的主要内容,如果未能解决你的问题,请参考以下文章

菜鸟系列 Golang 实战 Leetcode —— 面试题57 - II. 和为s的连续正数序列

菜鸟系列 Golang 实战 Leetcode —— 面试题32 - I. 从上到下打印二叉树

菜鸟系列 Golang 实战 Leetcode —— 买卖股票的最佳时机系列(121. 买卖股票的最佳时机买卖股票的最佳时机 II

菜鸟系列Golang学习 — 协程

golang刷Leetcode系列 --- 实现strStr()

golang刷Leetcode系列 --- 加1