私はいくつかの制約を受け、インタビューで以下のチャレンジを得ました。JavaScriptチャレンジ - シャーロックとアレイ
ワトソンは、シャーロックの配列A
の長さをN
にします。次に、左の要素の合計が右の要素の合計と等しくなるように要素に配列の要素が存在するかどうかを判断するように求めます。左/右に要素がない場合、合計はゼロとみなされます。正式には、 A1+A2...A(i−1)=A(i+1)+A(i+2)...AN
のようにi
が見つかります。
入力形式
最初の行はT
、テストケースの数を含んでいます。各テストケースについて、最初の行にはN
、配列A
の要素数が含まれています。各テストケースの2行目には、N
個の空白で区切られた整数が含まれており、配列A
を示しています。各テストケース印刷YES
について
出力フォーマット
は、アレイ内の要素が存在する場合、その左の要素の和は、その右側の要素の和に等しくなるように。そうでない場合はNO
を印刷します。
制約
1≤T≤10
1≤N≤10^5
1≤Ai≤2×10^4
1≤i≤N
私は私のコーディングの落とし穴を知ってほしい、私はそれを解決してきたが、それはいくつかのテストケースに失敗しています。私はほとんど4〜5時間を過ごしましたが、それを解決することはできません。
function processData(input) {
input = input.split('\n');
var counter=0;
var sum = function(n){
var r=[];
for(var k=0;k<n.length;k++){
if(!isNaN(n[k])) {
if(n[k] >= 1 && n[k] <= (2 * Math.pow(10,4))){
r.push(n[k].trim());
}
}
}
return r.reduce(function(a, b) { return Number(a) + Number(b); }, 0);
}
for(var i=2;i<=input.length;i+=2){
var ret='NO';
if(counter<=10){
input[i] = input[i].split(' ');
if(input[i].length <= Math.pow(10,5) && input[i-1] <= input[i].length && input[i-1] >= 1){
for(var j=0;j<input[i].length;j++){
if(sum(input[i].slice(0,j)) === sum(input[i].slice(j+1,input[i].length))){
ret = 'YES';
break;
}
}
}
}
counter++;
console.log(ret);
};
}
process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function (input) {
_input += input;
});
process.stdin.on("end", function() {
processData(_input);
});
チャレンジリンク - -
私のソリューションですhttps://www.hackerrank.com/challenges/sherlock-and-array
を? –
このようなひどいインタビューの質問。 – mkaatman
@ダニエルA.ホワイトそれは私が持っていないので、インタビューです。 –