Javascript 求最小切片余度的绝对和
嗨,我参加了两次Codibility测试,得了0分。请帮助我使用JavaScript解决这个问题 给出了一个由N个整数组成的非空数组A。一对整数(P,Q),如0≤ P≤ QJavascript 求最小切片余度的绝对和,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)
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
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;i log(解决方案([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这是字符串,这些是数字,所以它可以按它应该的方式进行排序。我不记得这是否不在规范中,可能只是一个浏览器实现,如果数组中有数字,就按数字排序