给你一个n(),和一个长度为n的数组,在不同时选位置相邻的两个数的基础上,求该序列的最大子序列和(挑选出的子序列可以为空)。-笔试面试资料

这是qklbishe.com第6189 篇笔试面试资料
提供答案分析,通过本文《给你一个n(),和一个长度为n的数组,在不同时选位置相邻的两个数的基础上,求该序列的最大子序列和(挑选出的子序列可以为空)。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:
给你一个n(给你一个n(),和一个长度为n的数组,在不同时选位置相邻的两个数的基础上,求该序列的最大子序列和(挑选出的子序列可以为空)。),和一个长度为n的数组,在不同时选位置相邻的两个数的基础上,求该序列的最大子序列和(挑选出的子序列可以为空)。

JavaScript

给你一个n(),和一个长度为n的数组,在不同时选位置相邻的两个数的基础上,求该序列的最大子序列和(挑选出的子序列可以为空)。 别卷啦!

一:饿 暴力法超时

function subsequence( n ,  array ) {     // write code here     if(n<= 2) return Math.max(...array)      let max = -Infinity     for(let i = 0;i<n;i++){         for(let j = i+2;j<n;j++){             max = Math.max(max,array[i]+array[j])         }     }     return max }
二:动态规划 创建一个新数组 
因为不能选择两个相邻的元素,那么对于第i个元素的选择的可能性就包含选择i和不选择i个元素,至于选与不选其实是和第i-1个元素有直接关系的
所以需要比较的是 前一项的最大子序和 和加上奔向的子序和 一直比到最后

function subsequence( n ,  array ) {     // write code here     const dp = new Array(n)     dp[0] = array[0]     dp[1] = Math.max(dp[0],array[1])     for(let i = 2;i<n;i++){         dp[i] = Math.max(dp[i-1],dp[i-2]+array[i]) //更新dp;1.不包含前一个元素,包括本元素;2. 不包括本元素的较大值     }     return dp[n-1] }

今天 22:49:34 回复(0)

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

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 给你一个n(),和一个长度为n的数组,在不同时选位置相邻的两个数的基础上,求该序列的最大子序列和(挑选出的子序列可以为空)。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情