LeetCode EASY TwoSum Explanation

Leetcode Question

I have analyzed the answer for the Leetcode question and am asking for whether my reasoning is correct. I tried analyzing when num = 2 and when num = 7. The analyses are separated by //.

function twoSum(nums, target) {
  var result = []
  nums.forEach(function(num, i) {
    var diff = target - num
    var k = nums.indexOf(diff)
    if (k > -1 && k !== i) {
       result[0] = i
       result[1] = k
    }
  })
  return result
}
twoSum([2,7,11,15], 9)
var diff = target - num

For 2, diff = 9 - 2 = 7. // For 7, diff = 9 - 7 = 2

var k = nums.indexOf(diff)

indexOf(7) = 1 → k = 1. // indexOf(2) = 0 → k = 0.

if (k > -1 && k !== i)

1 > -1 && 1 !== 0. // 0 > -1 && 0 !== 1.

result[0] = i

result[0] = 0. // result[0] = 1

result[1] = k

result[1] = 1. // result[1] = 0

return result

[0,1] // [1, 0]

So the answer is supposed to be [0,1] but when num = 7 I get [1,0] and was wondering why the function is accepted as the correct answer when I get both [0,1] and [1,0].


Because your answer doesn't need to be sorted. both [0,1] and [1,0] are correct.