数组-Longest Continuous Increasing Subsequence-简单

描述
给定一个整数数组(下标从 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
		if (A.empty())
			return 0;
		if (A.size() == 1)
			return 1;
		//从左向右
		int result1 = 0;
		int cur = 1;
		for (int i = 1; i < A.size(); i++){
			if (A[i] > A[i - 1]){
				cur++;
				result1 = result1 > cur ? result1 : cur;
			}				
			else
				cur = 1;
		}
		//从右向左
		int result2 = 0;
		cur = 1;
		for (int i = A.size() - 1; i >= 1; i--){
			if (A[i - 1] > A[i]){
				cur++;
				result2 = result2 > cur ? result2 : cur;
			}
			else
				cur = 1;
		}
		return max(result1, result2);
	}
};



猜你喜欢

转载自blog.csdn.net/qq_18124075/article/details/80770852