牛牛的数列

题目:牛牛现在有一个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 };

 

posted @ 2021-05-24 15:05  icyyyy  阅读(133)  评论(0)    收藏  举报