Javascript 我的循环运行了两次,没有给出正确的答案,也没有给出任何解决方案
**最大和子阵问题在于找到最大和 指数组或整数列表中的连续子序列: maxSequence([-2,1,-3,4,-1,2,1,-5,4])//应该是6:[4,-1, 2,1]简单的情况是,列表仅由正数组成 最大和是整个数组的和。如果名单上有 如果只有负数,则返回0 空列表被认为具有零最大和。请注意 空列表或数组也是有效的子列表/子数组**Javascript 我的循环运行了两次,没有给出正确的答案,也没有给出任何解决方案,javascript,algorithm,list,data-structures,Javascript,Algorithm,List,Data Structures,**最大和子阵问题在于找到最大和 指数组或整数列表中的连续子序列: maxSequence([-2,1,-3,4,-1,2,1,-5,4])//应该是6:[4,-1, 2,1]简单的情况是,列表仅由正数组成 最大和是整个数组的和。如果名单上有 如果只有负数,则返回0 空列表被认为具有零最大和。请注意 空列表或数组也是有效的子列表/子数组** var maxSequence = function(arr) { // ... let max = 0; const sorted
var maxSequence = function(arr) {
// ...
let max = 0;
const sorted = arr.sort((a, b) => {
return a - b;
});
if (arr.length == 0) {
return 0;
} else if (sorted[sorted.length - 1] >= 0 && sorted[0] >= 0) {
let max = 0;
for (let i = 0; i < sorted.length; i++) {
max += sorted[i];
}
return max;
} else if (sorted[0] < 0 && sorted[sorted.length - 1] < 0) {
console.log(0);
} else {
let halfLength = Math.floor(arr.length / 2);
let pivot = 0;
let sequence = 0;
let next = 1;
while (pivot <= arr.length - 1) {
if (arr[next] <= halfLength) {
sequence += arr[next];
next += 1;
} else {
sequence = 0;
halfLength += 1;
pivot += 1;
next = pivot + 1;
}
if (pivot == arr.length - 2) {
sequence += arr[next];
next += 1;
break;
}
if (sequence >= max) {
max = sequence;
}
}
console.log("the answer", max);
}
};
maxSequence([-2, 1, -3, 4, -1, 2, 1, -5, 4]); //, 6)
var maxSequence=函数(arr){
// ...
设max=0;
const sorted=arr.sort((a,b)=>{
返回a-b;
});
如果(arr.length==0){
返回0;
}else if(排序后的[sorted.length-1]>=0&&sorted[0]>=0){
设max=0;
for(设i=0;i 而(pivot你可以对所有组合进行测试,看看哪一个给你最好的分数
函数maxSequence(数据){
让结果={
值:null,
seq:null
}
让我们检查={
是的,
负:是的
}
data.forEach(e=>{
如果(e>0),则check.neg=false;
如果(e<0),则检查.pos=false;
})
如果(检查位置){
返回和(数据)
}否则如果(勾选负){
返回0;
}
函数和(seq){
返回顺序减少((r,e)=>r+e,0)
}
for(设i=0;iresult.value){
result.value=seqSum;
result.seq=seq;
}
}
}
返回结果;
}
log(maxSequence([-2,1,3,4,1,2,1,5,4]))
log(maxSequence([1,5,9,1]))
log(maxSequence([-1,-2,-3,-4]))
一个快速的谷歌搜索返回,以及其他。有一个更简单、更高效的解决方案。