Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.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 我的磁带平衡解决方案Codibility性能有什么问题_Javascript_Algorithm_Puzzle - Fatal编程技术网

Javascript 我的磁带平衡解决方案Codibility性能有什么问题

Javascript 我的磁带平衡解决方案Codibility性能有什么问题,javascript,algorithm,puzzle,Javascript,Algorithm,Puzzle,这是我的解决方案,它没有通过性能要求。 据我所知,它与我查找的其他解决方案类似: function solution(A) { let slice = A.slice(1,A.length); let firstSliceSum = A[0]; let lastSliceSum = slice.reduce((a, b) => a + b); let smallestValue = Math.abs(firstSliceSum-lastSliceSum);

这是我的解决方案,它没有通过性能要求。 据我所知,它与我查找的其他解决方案类似:

function solution(A) {
    let slice = A.slice(1,A.length);
    let firstSliceSum = A[0];
    let lastSliceSum = slice.reduce((a, b) => a + b);
    let smallestValue = Math.abs(firstSliceSum-lastSliceSum);
    for(let i=1;i<A.length-1;i++){
        let shift = slice.shift();
        firstSliceSum=firstSliceSum+shift;
        lastSliceSum=lastSliceSum-shift;
        let diff = Math.abs(firstSliceSum-lastSliceSum);
        if(diff<smallestValue)smallestValue=diff;
    }
    return smallestValue;
}
函数解决方案(A){
设slice=A.slice(1,A.length);
设firstSliceSum=A[0];
让lastSliceSum=slice.reduce((a,b)=>a+b);
设smallestValue=Math.abs(firstSliceSum-lasstslicesum);

这里有几个问题

  • 正如所指出的,您正在循环中使用
    shift()
    ,最终使代码成为O(n2)
  • 其次,您也在考虑第一个索引
    0
    和,而前面提到的约束条件表示任何0<
    P
引用其中提到的问题陈述:

任何整数p,如0
  • 因此,您必须从
    1
    计算到
    A.length-1
片段:

函数解决方案(A){
设slice=A.slice(1,A.length);
设firstSliceSum=A[0];
让lastSliceSum=slice.reduce((a,b)=>a+b);
设smallestValue=-1;
for(设i=1;iconsole.log(解决方案([3,1,2,4,3]);
您能够指定性能要求是什么吗?不是javascript专家,但shift()似乎有O(n)复杂性,因此可能值得用
let shift=a[i];
@SaiBot yes似乎是shift()这是一个非常彻底的答案,并解释了一切!@somerandomusername很乐意帮助:)