最长上升连续子序列
来源:互联网 发布:电动汽车销售量数据 编辑:程序博客网 时间:2024/06/05 04:35
问题描述:
给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。)
样例
给定 [5, 4, 2, 1, 3]
, 其最长上升连续子序列(LICS)为 [5, 4, 2, 1]
, 返回 4
.
给定 [5, 1, 2, 3, 4]
, 其最长上升连续子序列(LICS)为 [1, 2, 3, 4]
, 返回 4
.
分从左向右上升和下降序列,它等于前一个状态的加一与当前状态的最大值
代码:
class Solution {
public:
/*
* @param A: An array of Integer
* @return: an integer
*/
int longestIncreasingContinuousSubsequence(vector<int> &A) {
// write your code here
int n=A.size();
if(n<2) return n;
else{
int maxlen1[n]={1};
int maxlen2[n]={1};
int max[n]={1};
for(int i=1;i<n;i++)
{
maxlen1[i]=1;
maxlen2[i]=1;
if(A[i]>A[i-1]) //升序
{
if (maxlen1[i-1]+1 > maxlen1[i])
{
maxlen1[i] = maxlen1[i-1] + 1;
}
}
if(A[i]<A[i-1]) //降序
{
if (maxlen2[i-1]+1 > maxlen2[i])
{
maxlen2[i] = maxlen2[i-1] + 1;
}
}
if(maxlen1[i]<maxlen2[i]) max[i]=maxlen2[i];
else max[i]=maxlen1[i];
}
int m=-1;
for(int i=1;i<n;i++)
{
if(m<max[i])
m=max[i];
}
return m;
}
}
};
感悟:
注意不要把两个情况弄混了及数组的初始化问题
- 最长上升连续子序列
- 最长上升连续子序列
- 最长连续上升子序列
- 最长上升连续子序列
- 最长上升连续子序列
- 最长上升连续子序列
- 最长上升连续子序列
- 最长上升连续子序列
- 最长上升连续子序列
- 最长上升连续子序列
- hdu1069-最长连续上升子序列
- 题目:最长上升连续子序列
- LintCode--最长上升连续子序列
- lintcode-最长上升连续子序列-397
- 最长上升连续子序列(LintCode)
- LintCode- 最长上升连续子序列
- lintCode刷题--最长上升连续子序列
- 最长上升连续子序列 II
- 日记(周末)
- 流程控制值循环结构
- PAT1019. 数字黑洞(20)
- 文章标题
- 如何将spring源码成功导入Eclipse中
- 最长上升连续子序列
- 计算长方形的面积和周长
- window安装python库
- SPSS实例教程:有序多分类Logistic回归
- freeswitch系列五 解决xlite和freeswitch通话没有语音的问题
- Jsp 中 include 指令和 include 动作的区别
- 通过原生JS和CSS制作钟表
- Scrapy--使用phantomjs爬取花瓣网图片
- android Material Design设计规范