栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode—300. 最长递增子序列

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode—300. 最长递增子序列

300. 最长递增子序列

题目描述:
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。

子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

考察重点:动态规划。根据题意可以写出转移方程:dp[i] = Max(d[i], dp[j] +1) 且j满足 nums[j] < nums[i] 和 j < i

func lengthOfLIS(nums []int) int {
    dp := make([]int, len(nums))
    maxLIS := 0
    for i := 0;i < len(nums);i ++{		//dp数组记录当前位置可以组成的最长子序列
        dp[i] = 1
    }
    for i := 0;i < len(nums);i ++{		// 由前至后遍历数组,更新dp数组
        for j := 0;j < i;j ++{
            if nums[j] < nums[i] && dp[j] + 1 > dp[i]{
                dp[i] = dp[j] + 1
            }
        } 
        if dp[i] > maxLIS{		// 记录最大字符列长度
            maxLIS = dp[i]
        }
    }
    return maxLIS
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/916988.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号