asp网站数据库位置,讯美网站建设,微信朋友圈推广方案,网站运营seo实训总结题目描述
给你一个整数数组 nums #xff0c;找到其中最长严格递增子序列的长度。
子序列 是由数组派生而来的序列#xff0c;删除#xff08;或不删除#xff09;数组中的元素而不改变其余元素的顺序。例如#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
示…题目描述
给你一个整数数组 nums 找到其中最长严格递增子序列的长度。
子序列 是由数组派生而来的序列删除或不删除数组中的元素而不改变其余元素的顺序。例如[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
示例 1
输入nums [10,9,2,5,3,7,101,18]
输出4
解释最长递增子序列是 [2,3,7,101]因此长度为 4 。示例 2
输入nums [0,1,0,3,2,3]
输出4示例 3
输入nums [7,7,7,7,7,7,7]
输出1提示
1 nums.length 2500-104 nums[i] 104
解答
class Solution {
public:int lengthOfLIS(vectorint nums) {// dp[i] 表示以 nums[i] 为结尾的最长递增子序列if(nums.size() 1) return nums.size();int n nums.size();vectorint dp(n, 1); // 每个数自己都为一个递增子序列int res 0;for(int i 1; i n; i){// 求出以 nums[i] 结尾的最长递增子序列for(int j 0; j i; j){if(nums[i] nums[j]) dp[i] max(dp[i], dp[j] 1);}if(dp[i] res) res dp[i];}return res;}
};