Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的循环运行了两次,没有给出正确的答案,也没有给出任何解决方案_Javascript_Algorithm_List_Data Structures - Fatal编程技术网

Javascript 我的循环运行了两次,没有给出正确的答案,也没有给出任何解决方案

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

**最大和子阵问题在于找到最大和

指数组或整数列表中的连续子序列: 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 = 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]))
一个快速的谷歌搜索返回,以及其他。有一个更简单、更高效的解决方案。