인덱스를 정의해야하므로, 투 포인터의 합 계산 방법은 불가하며
해시맵을 사용하면 O(n)
의 시간 복잡도로 해결 가능하다.
function twoSum(nums: number[], target: number): number[] {
const numMap: { [key: number]: number } = {};
for(let i = 0; i < nums.length; i++) {
// 목표값 - 현재값 = 원하는 값
const complement = target - nums[i];
// 해시맵에 원하는 값이 있는지 검사
if (complement in numMap) {
return [numMap[complement], i];
}
// 해시맵에 저장
numMap[nums[i]] = i;
}
throw new Error("No solution found");
}