最长连续递增序列

Bernie


Bernie
674. 最长连续递增序列
思路:
动态规划
1.确定 dp 数组含义:dp[i] 表示以 nums[i] 结尾的数组的最长连续递增序列长度为 dp[i]。
2.初始化 dp 数组,dp[i] = 1。
3.确定遍历方向,从前往后遍历。
4.确定转移方程:当 nums[i] > nums[i - 1] 时,dp[i] 的值为 dp[i - 1] + 1。
5.将 dp 数组中的最大值返回即可。
typescript 解法
function findLengthOfLCIS(nums: number[]): number {
const length: number = nums.length;
const dp: number[] = new Array(length).fill(1);
let res: number = 1;
for (let i: number = 1; i < length; i++) {
if (nums[i] > nums[i - 1]) {
dp[i] = dp[i - 1] + 1;
}
if (dp[i] > res) {
res = dp[i];
}
}
return res;
}
go 解法
func findLengthOfLCIS(nums []int) int {
// dp[i] 表示以nums[i]结尾的数组的最长连续递增序列长度为dp[i]
length := len(nums)
dp := make([]int, length)
// 初始化dp数组,均为1
for i := 0; i < length; i ++ {
dp[i] = 1
}
res := 1
// 确定遍历方向
for i := 1; i < length; i ++ {
// 确定转移方程:当nums[i]大于nums[i - 1]时,dp[i] 的值为dp[i - 1] + 1,否则则为1
if nums[i] > nums[i - 1] {
dp[i] = dp[i - 1] + 1
}
if dp[i] > res {
res = dp[i]
}
}
return res
}