lintcode_397_最长上升连续子序列
最长上升连续子序列
给定一个整数数组(下标从 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
.
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==0) return 0; if(n==1) return 1; int ax[n],in[n]; int max=0,min=0; ax[0]=1; in[n-1]=1; for(int i=1;i<n;i++) { ax[i]=1; if(A[i]>A[i-1]) { ax[i]=ax[i-1]+1; } if(max<ax[i]) max=ax[i]; } for(int i=n-2;i>=0;i--) { in[i]=1; if(A[i]>A[i+1]) { in[i]=in[i+1]+1; } if(min<in[i]) min=in[i]; } return max>min?max:min; } };