牛牛的数列
题目:牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少
思路:
代码:
1 /** 2 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 3 * 4 * 5 * @param nums int一维数组 6 * @return int 7 */ 8 function maxSubArrayLength( nums ) { 9 // write code here 10 let len = nums.length; 11 let left = new Array(len); 12 let right = new Array(len); 13 let res = 0; 14 left[0] = 1; 15 right[0] = 1; 16 for(let i = 1; i < len; i++){ 17 if(nums[i]>nums[i-1]){ 18 left[i] = left[i-1] + 1; 19 }else{ 20 left[i] = 1; 21 } 22 } 23 for(let i = len-1; i>=0;i--){ 24 if(nums[i] < nums[i+1]){ 25 right[i] = right[i+1] + 1; 26 }else{ 27 right[i] = 1; 28 } 29 } 30 for(let i = 1; i < len-1;i++){ 31 if(nums[i-1] < nums[i+1]){ 32 let sum = left[i-1] + right[i+1]; 33 if(sum > res){ 34 res = sum; 35 } 36 } 37 } 38 return res+1; 39 } 40 module.exports = { 41 maxSubArrayLength : maxSubArrayLength 42 };

浙公网安备 33010602011771号