정수 숫자 배열 nums
와 정수 target
이 주어졌을 때, 두 숫자의 합이 target
이 되는 두 숫자의 인덱스를 반환합니다.
각 입력에 정확히 하나의 해가 있다고 가정할 수 있으며, 같은 요소를 두 번 사용할 수 없습니다.
어떤 순서로든 답을 반환할 수 있습니다.
import java.util.*;
class Solution {
HashMap<Integer, Integer> valueIndexMap = new HashMap<>();
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
valueIndexMap.put(nums[i], i);
}
for (int i = 0; i < nums.length; i++) {
int pair = target - nums[i];
if (valueIndexMap.containsKey(pair) && valueIndexMap.get(pair) != i) {
return new int[]{i, valueIndexMap.get(pair)};
}
}
return new int[]{};
}
}
주어진 배열 원소의 값을 키로, 원소의 인덱스를 값으로 갖는 map을 만들어줍니다.
다시 배열을 탐색하면서, target에서 현재 원소값을 뺀 값이 map에 있는지 확인합니다.
존재한다면, 배열로 감싸서 return합니다.