[LintCode] 最长上升子序列

简介: 动态规划: lis[i] = max_{j = 0, 1, ..., i - 1, nums[j] < nums[i]} lis[j] + 1 1 class Solution { 2 public: 3 /** 4 * @param nums: The in...

动态规划:

lis[i] = max_{j = 0, 1, ..., i - 1, nums[j] < nums[i]} lis[j] + 1

 1 class Solution {
 2 public:
 3     /**
 4      * @param nums: The integer array
 5      * @return: The length of LIS (longest increasing subsequence)
 6      */
 7     int longestIncreasingSubsequence(vector<int> nums) {
 8         // write your code here
 9         vector<int> lis(nums.size(), 1);
10         int maxlen = 0;
11         for (int i = 1; i < (int)nums.size(); i++) {
12             for (int j = 0; j < i; j++)
13                 if (nums[j] <= nums[i] && lis[j] + 1 > lis[i])
14                     lis[i] = lis[j] + 1;
15             maxlen = max(maxlen, lis[i]);
16         }
17         return maxlen;
18     }
19 };

 

目录
相关文章
【动态规划刷题 15】最长定差子序列&& 最长的斐波那契子序列的长度
【动态规划刷题 15】最长定差子序列&& 最长的斐波那契子序列的长度
|
3月前
acwing 895 最长上升子序列1
acwing 895 最长上升子序列1
42 3
|
3月前
|
算法
动态规划算法学习二:最长公共子序列
这篇文章介绍了如何使用动态规划算法解决最长公共子序列(LCS)问题,包括问题描述、最优子结构性质、状态表示、状态递归方程、计算最优值的方法,以及具体的代码实现。
201 0
动态规划算法学习二:最长公共子序列
|
3月前
acwing 896 最长上升子序列II
acwing 896 最长上升子序列II
35 2
|
算法
代码随想录算法训练营第五十二天 | LeetCode 300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
代码随想录算法训练营第五十二天 | LeetCode 300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
59 1
|
算法
Leecode 300. 最长上升子序列
Leecode 300. 最长上升子序列
73 0
|
存储 安全 测试技术
蓝桥<排水管道>题的题解(最长上升子序列的变式)
蓝桥杯排水管道AC题解,帮助你加深理解LIS最长上升子序列
|
算法
leetcode-每日一题873. 最长的斐波那契子序列的长度(哈希和二分)
题目要求斐波那契数列长度要大于等于3,就等于说要确定 x[1] 和 x[2]来确定x[3]…x[n]之和的数列,所以我们用两层for循环来枚举x[1] 和 x[2] ,因为斐波那契数列满足 x[i] = x[i - 1] + x[i - 2], 所以x[3] = x[1] + x[2] x[4] = x[3] + x[2]…,我们只需要三个变量来不断变换, 每次从 arr 中找前两个数,然后查看后续在符合斐波那契的数在arr中是否存在
112 0
leetcode-每日一题873. 最长的斐波那契子序列的长度(哈希和二分)
力扣1143. 最长公共子序列 动态规划之最长公共子序列
力扣1143. 最长公共子序列 动态规划之最长公共子序列
202 0
力扣1143. 最长公共子序列 动态规划之最长公共子序列
|
算法 测试技术
最长上升子序列(LeetCode-300)
最长上升子序列(LeetCode-300)
107 0
最长上升子序列(LeetCode-300)

热门文章

最新文章

下一篇
开通oss服务