leetcode 300:最长上升子序列
题目描述:给定一个无序的整数数组,找到其中最长上升子序列的长度。最长上升子序列不要求是连续的。
输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。
解题步骤:
1、 状态定义:采用一维数组dp[i]来表示代表 nums 前i个数字的最长子序列长度,其中nums[i]表示上升过程中的最大值
2、 状态转移方程:
如果nums[j] < nums[i],就:
dp[i]=max(dp[i],dp[j]+1)
在添加第i个元素时,判断前i个元素的最长子序列,如果nums[i]大于nums[i-1]那么直接在dp[i-1]的基础上加一就行了;如果nums[i]不大于nums[i-1],那么只需要判断判断0到i-1 之间小于nums[i]的子序列的最大长度
3、 初始化