-
[LeetCode/JAVA] 1. Two SumETC/Algorithm 2023. 8. 31. 22:51
문제
배열 nums가 주어지는데 이 요소들을 중복하지 않고 한 번만 사용해서 target이라는 값을 만드는 문제이다.
풀이
해쉬맵을 사용해서 target의 값과 nums[i]의 값의 차이를 조회해서 만약 존재한다면 그 값이 정답이다. 하지만 해쉬맵이 초기에는 비어있으므로 존재하지 않다면 put을 통해 해쉬맵에 내용을 저장해주면서 반복하다보면 O(N)만에 정답을 구할 수 있게 된다.
코드
class Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer, Integer> hmap = new HashMap<>(); for (int i = 0; i < nums.length; i++) { if (hmap.containsKey(target - nums[i])){ return new int[] {hmap.get(target - nums[i]), i}; } hmap.put(nums[i], i); } return new int[] {}; } }