Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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 - Fatal编程技术网

Javascript 求最小切片余度的绝对和

Javascript 求最小切片余度的绝对和,javascript,algorithm,Javascript,Algorithm,嗨,我参加了两次Codibility测试,得了0分。请帮助我使用JavaScript解决这个问题 给出了一个由N个整数组成的非空数组A。一对整数(P,Q),如0≤ P≤ Q=0&&A[N-1]>=0){ return Math.abs(A[0]); } //全部否定 if(A[0]Math.abs(A[j])){ i++; }否则{ j--; } } 如果(A[i]>0)中断; } 返回minAbsSum; }以下是O(n log n)答案的javascript版本,摘自: 函数解决方案(A)

嗨,我参加了两次Codibility测试,得了0分。请帮助我使用JavaScript解决这个问题

给出了一个由N个整数组成的非空数组A。一对整数(P,Q),如0≤ P≤ Q 最小abs切片的绝对和最小

例如,阵列应确保:

A[0] = 2
A[1] = -4
A[2] = 6
A[3] = -3
A[4] = 9
其中包含以下片段:

  • (0,1),其绝对和为=| 2+(-4)|=2
  • (0,2),其绝对和为=| 2+(-4)+6 |=4
  • (0,3),其绝对和为=| 2+(-4)+6+(-3)|=1
  • (1,3),其绝对和为=|(-4)+6+(-3)|=1
  • (1,4),其绝对和为=|(-4)+6+(-3)+9 |=8
  • (4,4),其绝对和为=| 9 |=9
切片(0,3)和(1,3)都是最小abs切片,其绝对和等于1

编写一个函数:

function solution(A);
给定一个由N个整数组成的非空数组a,返回min abs slice的绝对和

为以下假设编写有效的算法:

  • N是[1..1000000]范围内的整数
  • 数组A的每个元素都是范围内的整数[−10,000..10,000];
以下是我的解决方案:

函数解(A,i=0,sum=0){
常数N=A.长度;
如果(N==0){
返回0;
}
如果(N==1){
return Math.abs(A[0]);
}
A.排序();
//所有积极因素
如果(A[0]>=0&&A[N-1]>=0){
return Math.abs(A[0]);
}
//全部否定
if(A[0]Math.abs(A[j])){
i++;
}否则{
j--;
}
}
如果(A[i]>0)中断;
}
返回minAbsSum;

}
以下是O(n log n)答案的javascript版本,摘自:

函数解决方案(A){
如果(1==A.length)返回Math.abs(A[0]);
设和=新数组(A.length+1);
设minAbsSum=Number.MAX\u SAFE\u整数;
和[0]=0;
对于(变量i=0;ilog(解决方案([10,10,10,10,10,-50])
首先,JavaScript和java完全不同。选择一个。第二,你没有提供任何努力,只是一个问题,因此这可能会被否决和关闭。天哪,这个问题的措辞到处都是。分享原始问题的链接。@achAmháin感谢您的快速回答。我知道Java和JavaScript之间的区别,而且我已经尝试了很多,但无法解决它,这就是我在这里发布的原因。是我的分数。@Geuis,这是一个付费测试,我无法再次打开链接,因为我已经参加了测试。如果你想要我写的代码,那么我可以在帖子中添加。你要做的第一件事是对数组排序,这已经使下面的所有逻辑无效,更改输入的顺序会改变你可以制作的切片。非常感谢你的努力。我想告诉你,我已经用你的解决方案再次进行了测试,它的正确率为80%,性能为83%,足以获得及格分数。再次感谢你的摇滚乐,就是这样。快速提问:如果我的JS文档是正确的,那么对于sum.sort(),“如果省略,元素将按升序,ASCII字符顺序排序”,这样排序[0,3,6,9,13,18]会给我[0.13,18,3,6,9],这在ASCII前提下是有意义的。排序步骤中不应该提供比较函数吗?@Nick这是字符串,这些是数字,所以它可以按它应该的方式进行排序。我不记得这是否不在规范中,可能只是一个浏览器实现,如果数组中有数字,就按数字排序