Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.
나의 풀이 :
var twoSum = function(nums, target) {
let answer = []
for(let i = 0; i < nums.length; i ++){
for(let j = i+1; j < nums.length; j ++){
if(nums[i] + nums[j] === target){
answer = [i, j]
}
}
}
return answer
};
그런데 이렇게 풀었을 경우, O(n^2)가 된다.
여기까지만 풀었을 때, 이 문제가 왜 hash Table이지? 라는 생각이 들었다.
근데, O(n)으로 풀기 위해서는 hash Table이 필요했다.
function twoSum(nums, target) {
const numMap = new Map;
for (let i = 0; i < nums.length; i++) {
const difNum = target - nums[i];
if (numMap.has(difNum)) return [numMap.get(difNum), i];
numMap.set(nums[i], i);
}
}
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 약수의 합 - JS (0) | 2022.05.06 |
---|---|
[프로그래머스] 이상한 문자 만들기 - JS (0) | 2022.05.06 |
[자바스크립트] 뒤집은 소수 | 숫자 뒤집는 방법 | 소수 구하는 방법 (0) | 2022.03.02 |
[백준] 세탁소 사장 동혁 (0) | 2021.09.22 |
[백준] 전자레인지 - 파이썬 (0) | 2021.09.22 |