【发布时间】:2016-10-06 16:28:20
【问题描述】:
Watson 给 Sherlock 一个长度为 N 的数组 A。然后他让他 确定数组中是否存在一个元素,使得 它左边的元素等于它的元素之和 正确的。如果左/右没有元素,则总和为 被认为是零。形式上,找到一个 i,这样,
输入格式
第一行包含 T,测试用例的数量。对于每个测试 情况下,第一行包含 N,数组中的元素个数 A. 每个测试用例的第二行包含 N 个空格分隔 整数,表示数组A。
约束
1<=T<=10 1<=N<=10^5 1<=Ai<=2*10^4 1<=i<=N输出格式
对于每个测试用例,如果数组中存在一个元素,则打印 YES, 使得它左边的元素之和等于 右边的元素;否则打印 NO。
示例输入
2 3 1 2 3 4 1 2 3 3样本输出
NO YES解释
对于第一个测试用例,不存在这样的索引。对于第二次测试 案例,
因此索引 3 满足给定条件。
我在 3 个测试用例中遇到超时问题
function check(input) {
var result = "NO";
var sum=0;
input.map(function(data){
sum=sum+(+data);
})
sumLeft=0;
sumRight=sum-(+input[0]);
for(var i=1;i<input.length;i++){
sumLeft=sumLeft+(+input[i-1]);
sumRight=sumRight-(+input[i])
if(sumLeft==sumRight)
{
console.log("YES");
return;
}
}
console.log("NO");
}
function processData(input) {
//Enter your code here
var lines = input.split("\r\n");
for (var m = 2; m < lines.length; m = m + 2) {
check(lines[m].split(" "));
}
}
process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function(input) {
_input += input;
});
process.stdin.on("end", function() {
processData(_input);
});
【问题讨论】:
标签: javascript arrays algorithm performance