2017-06-23 9 views
0

leetcodeを使用してインタビューをコーディングするために自分自身を準備しようとしています。最初の問題では、その合計が与えられたターゲットと等しい数のインデックスを返さなければなりません。私の結果を満たす問題が合計がターゲットと等しい場合に配列インデックスのインデックスを返します

Input: 
[3,3]. target=6 
Output: 
undefined 
Expected: 
[0,1] 

に失敗した19のうち13回のテストは、誰かが私に私が失敗していますヒントをお願いできますか?

私のソリューション:

/** 
* @param {number[]} nums 
* @param {number} target 
* @return {number[]} 
*/ 
var twoSum = function(nums, target) { 
    for (var i=0; i< nums.length; i++) 
    { 
     for (var j=1; j< (nums.length-1); j++) 
     { 
      if ((nums[i]+nums[j]) == target) 
       { 
        var arr = [nums.indexOf(nums[i]), nums.indexOf(nums[j])]; 
        arr.sort(); 
        return arr; 
       } 
     } 
    } 
}; 
+0

'input = [2,2,2]'と 'target = 6'の場合はどうなりますか? 2つの数字だけを検証すべきですか? –

+0

@WashingtonGuedes:それはちょうど2つの数字です。 –

+0

問題はネストされた 'for'ループにあります。あなたは本当に最後のもの以外のすべての数字をチェックしたいですか? – BoltKey

答えて

2

あなたの配列の長さが2である場合は、あなたのinnerloopは次のとおりです。 j=1; j < 1; j++

コードが入っていないので、何も返されませんでした。

単にあなたのループの順序変更:私は今をテストする時間がありませんが、私はあなたのコードとforループの範囲を考えては(VARのために間違っている可能性があります見

/** 
 
* @param {number[]} nums 
 
* @param {number} target 
 
* @return {number[]} 
 
*/ 
 
var twoSum = function(nums, target) { 
 
    for (var i=0; i< nums.length - 1; i++) 
 
    { 
 
     for (var j= i + 1; j < (nums.length); j++) 
 
     { 
 
      if ((nums[i]+nums[j]) == target) 
 
       { 
 
        return [i,j]; 
 
       } 
 
     } 
 
    } 
 
}; 
 
console.log(twoSum([3,3], 6));

+0

が正しいです。ネストされたループ条件は 'for(var j = 1; j Junaid

0

をi = 0; i < nums.length; i ++)numsの長さが2であるために範囲外ですが、インデックス2のnumはなく、numsのインデックスは0と1ではありません2

関連する問題