菜鸟系列 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