牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。-笔试面试资料

这是qklbishe.com第6359 篇笔试面试资料
提供答案分析,通过本文《牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:
牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。

JavaScript

牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。 别卷啦!

left数组表示从左边着求以每个元素作为结尾的最长递增子序列的长度
right数组表示从右边求以每个元素作为开头的连续最长递增子序列的长度值

function maxSubArrayLength( nums ) {     // write code here     let len = nums.length, res = 0     let left = new Array(len) //以arr[i]结尾的连续序列长度     let right = new Array(len)//以arr[i]开头的连续序列长度       left[0] = 1     right[0] = 1     for(let i = 1;i<len;i++){         left[i] = nums[i] > nums[i-1] ? left[i-1] +1 : 1     }     for(let i = len-1;i>=0;i--){         right[i] = nums[i] < nums[i+1] ? right[i+1] + 1 : 1     }     for(let i = 1;i<len-1;i++){         if(nums[i-1]<nums[i+1]){ //找连接点                   let sum = left[i-1] + right[i+1]          res = Math.max(res, sum)         }     }    return res + 1 } 


今天 19:00:45 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情