LintCode 最长上升连续子序列
来源:互联网 发布:中国家暴数据统计2017 编辑:程序博客网 时间:2024/06/05 07:33
1.描述
给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。)
注意事项
time
样例
给定 [5, 4, 2, 1, 3]
, 其最长上升连续子序列(LICS)为 [5, 4, 2, 1]
, 返回4
.
给定 [5, 1, 2, 3, 4]
, 其最长上升连续子序列(LICS)为 [1, 2, 3, 4]
, 返回4
.
2.分析
题目说明很清晰,最长,上升,连续,子序列。
3.代码
class Solution {
public:
/*
* @param A: An array of Integer
* @return: an integer
*/
int longestIncreasingContinuousSubsequence(vector<int> &A) {
// write your code here
int i,j,k;
int cat=0;
int dp[100005];
for(i=0;i<A.size();i++)
dp[i]=1;
for(i=1;i<A.size();i++)
{
if(A[i]>A[i-1])
dp[i]=dp[i-1]+1;
}
for(i=0;i<A.size();i++)
{
cat=max(cat,dp[i]);
}
for(i=0;i<A.size();i++)
dp[i]=1;
for(i=1;i<A.size();i++)
{
if(A[i]<A[i-1])
dp[i]=dp[i-1]+1;
}
for(i=0;i<A.size();i++)
{
cat=max(cat,dp[i]);
}
return cat;
}
};
4.总结
最开始看到两个测试样例时看到【54213】出来【5421】,以为因为是子序列所以必须去掉一个,后来才意识到是因为不满足上升序列,一眼看过去很容易忽视是不是上升序列,体现在程序中是最简单的A[i]<A[j],很多时候直观的表现不容易观察,程序确是忠实的为我们写下的每一句代码工作。
由于上升序列可以是从小到大,也可以是从大到小,因此类似的代码只需要更改判断条件A[i]<A[j]和A[i]>[j]即可。
- LintCode--最长上升连续子序列
- lintcode-最长上升连续子序列-397
- 最长上升连续子序列(LintCode)
- LintCode- 最长上升连续子序列
- lintCode刷题--最长上升连续子序列
- LintCode:最长上升连续子序列
- lintcode -- 最长上升连续子序列
- lintcode:最长上升连续子序列
- LintCode: 最长上升连续子序列
- Lintcode最长上升连续子序列
- 最长上升连续子序列-LintCode
- 最长上升连续子序列-LintCode
- LintCode 最长上升连续子序列
- lintcode longest-increasing-continuous-subsequence 最长上升连续子序列
- LintCode(easy)最长上升连续子序列
- lintcode——最长上升连续子序列
- [Lintcode 397] 最长上升连续子序列(Python)
- LintCode刷题——最长上升连续子序列
- Titan数据库快速入门之神的光芒
- HashMap为什么是不安全的?HashTable和ConcurrentHashMap为什么是安全的 ?
- IDEA导出jar包后运行报错 找不到或无法加载主类
- 如何提高SSH的安全性?
- [11.3]日常模拟.3
- LintCode 最长上升连续子序列
- Frida官方手册
- 非线性动力学与混沌
- Nginx+Tomcat搭建高性能负载均衡集群
- 洛谷 1650 赛马 贪心 解题报告
- 基础篇--Unity3D中部分视图的打开方法及一些注释
- 【Unity】Ninja跑酷学习笔记一
- scrip基本操作 拼接 替换 分割.....
- (八)装饰器基础——闭包