给定一个数组和一个正整数N,求一个和小于N的最长连续子数组

给定一个数组和一个正整数N,求一个和小于N的最长连续子数组
头条算法题
相关代码
//请把代码文本粘贴到下方(请勿用图片代替代码)
大神!!!思路,代码,注释
泛舟湖上清波郎朗
浏览 1250回答 2
2回答

千万里不及你

可以用动态规划的思想去看,设S(i)为以第i个元素结尾的和小于N的最长连续数组设len(i)为S(i)的长度设sum(i)为S(i)的和边界:len(0)=arr[0]=N,那么舍弃否则将arr[i]加入S(i)中(目前len(i)为1,sum(i)为arr[i])不停归并S(i)左边相邻的S(i-len(i)),直到sum(i)不再小于N这里需要注意对于一些比N大的项原来不可取,现在也有可能取到最后从S(i)最左的元素往右筛除,缩小数组直到总和小于N最后根据最长的len返回数组即可functionlsa(arr,n){if(arr.lengthlen[max]?i:max,0)returnarr.slice(max+1-len[max],max+1)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript