牛牛的数组 NC155 牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。 class Solution { public: int maxSubArrayLength(vector<int>& nums) { // write code here int len = nums.size(); if (len < 3) return len; int max = 0; vector<int> left(len, 1); vector<int> right(len, 1); for (int i = 1; i < len; i++) { if (nums[i] > nums[i - 1]) left[i] = left[i - 1] + 1; } for (int j = len - 1; j > 0; j--) { if (nums[j - 1] < nums[j]) right[j - 1] = right[j] + 1; } for (int i = 1; i < len-1; i++) { if (nums[i + 1] > nums[i - 1]) max = left[i-1] + right[i+1] + 1 > max ? left[i-1] + right[i+1] + 1 : max; } return max; } };