Day17.动态规划设计:最长递增子序列 零、前言 更新日志: 2024-4-21:阅读了 v5.2 的一、动态规划解法 的 PDF;总结了 零、前言 & 一、动态规划解法。 1.本文主要内容: 【1】昨日打卡,学会了动态规划的套路: 找到了问题的「状态」, 明确了 dp 数组/函数的含义, 定义了 base case; 但不知: 如何确定「选...
不要担心,动态规划的难点本来就在于寻找正确的状态转移方程,本文就借助经典的「最长递增子序列问题」来讲一讲设计动态规划的通用技巧:数学归纳思想。 最长递增子序列(Longest Increasing Subsequence,简写 LIS)是非常经典的一个算法问题,比较容易想到的是动态规划解法,时间复杂度 O(N^2),我们借这个问题来由浅入深讲解...
不要担心,动态规划的难点本来就在于寻找正确的状态转移方程,本文就借助经典的「最长递增子序列问题」来讲一讲设计动态规划的通用技巧:数学归纳思想。 最长递增子序列(Longest Increasing Subsequence,简写 LIS)是非常经典的一个算法问题,比较容易想到的是动态规划解法,时间复杂度 O(N^2),我们借这个问题来由浅入深讲解...
根据刚才我们对 dp 数组的定义,现在想求 dp[5] 的值,也就是想求以 nums[5] 为结尾的最长递增子序列。 nums[5] = 3,既然是递增子序列,我们只要找到前面那些结尾比 3 小的子序列,然后把 3 接到最后,就可以形成一个新的递增子序列,而且这个新的子序列长度加一。 当然,可能形成很多种新的子序列,但是我们...
43 changes: 42 additions & 1 deletion 43 动态规划系列/动态规划设计:最长递增子序列.md Original file line numberDiff line numberDiff line change@@ -215,4 +215,45 @@ public int lengthOfLIS(int[] nums) { ===其他语言代码=== ===其他语言代码===[Kian](https...
本文就借助「最长递增子序列」来讲一种设计动态规划的通用技巧:数学归纳思想。 最长递增子序列(Longest Increasing Subsequence,简写 LIS)是比较经典的一个问题,比较容易想到的是动态规划解法,时间复杂度 O(N^2),我们借这个问题来由浅入深讲解如何写动态规划。比较难想到的是利用二分查找,时间复杂度是 O(NlogN),...