-
Two sum (LeetCode - easy) ** 다시풀어보기!problem 2020. 3. 24. 12:52
PROBLEM
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [3, 6, 11, 15], target = 17, Because nums[1] + nums[2] = 6 + 11 = 17, return [1, 2].
즉, nums array 의 두 element를 더한 값이 target이 되어야 하고
그 두 element의 인덱스를 리턴해주어야 하는 것!
이해가 안되어서 솔루션을 보고 어떻게 진행되는지 풀이해보았다ㅠㅠ
SOLUTION
var twoSum = function(nums, target) { //빈 object의 variable를 선언한다. object의 key 는 element 값은 인덱스로 만들어주기 위해서 const map = {}; for (let i = 0; i < nums.length; i++) { //target에서 nums의 random element를 뺀 값을 val로 지정한다. const val = target - nums[i]; //1. nums[0]일 때 val 은 14 //2. nums[1]일 때 val 은 11 //3. nums[2]일 때 val 은 6 //1. map의 14가 undefined이면? //2. map의 11이 undefined이면? //3. map의 6이 undefined이 아니다! if (map[val] !== undefined) { //3. map의 6의 값인 1과 현재 i의 값인 2를 리턴한다. return [map[val], i]; } //1. map의 3의 값은 0 --> map{3 : 0} //2. map의 6의 값은 1 --> map{3 : 0, 6 : 1} map[nums[i]] = i; } };
나중에 다시 풀어 봐야지
'problem' 카테고리의 다른 글
이 문제들을 다 풀면 this 정복! (0) 2020.04.30 Jewels and Stones (Leet code - easy) (1) 2020.04.07 이 문제들을 다 풀면 객체지향 JavaScript, Value vs. Reference 이해 끝! (1) 2020.04.06 이 문제들을 다 풀면 scope 이해 끝 (0) 2020.04.02 closure 헷갈리는 문제 (0) 2020.04.02