5주차 · 해시: 맵과 셋
쉬움해시배열

두 수의 합

정수 배열 nums와 정수 target이 주어져요. 더해서 target이 되는 두 원소의 인덱스를 배열로 반환해요.

정답은 항상 정확히 하나 있고, 같은 원소를 두 번 사용할 수 없어요. 인덱스는 오름차순으로 반환해요.

예시

예시 1
예시 2
예시 3

제한 사항

  • 2 ≤ nums.length ≤ 10,000
  • -10^9 ≤ nums[i] ≤ 10^9
  • -10^9 ≤ target ≤ 10^9
  • 정답은 유일하게 있어요.
이미 지나온 값을 해시맵에 { 값: 인덱스 }로 담아두면, 각 원소마다 target - 값이 있었는지 O(1)에 확인할 수 있어요.
javascript
function twoSum(nums, target) {
const seen = new Map();
for (let i = 0; i < nums.length; i++) {
const need = target - nums[i];
if (seen.has(need)) return [seen.get(need), i];
seen.set(nums[i], i);
}
return [];
}
에디터를 불러오고 있어요…
코드를 작성하고를 눌러 예시 테스트를 확인해 보세요.