두 수의 합 링크
nums = [2, 6, 11, 15], target = 8 이 주어졌을 때, 배열에 있는 두 숫자를 덧셈하여 target과 같은 값을 만들 수 인덱스를 리턴하라. 'nums[0] + nums[1] == target' 인 경우 리턴은 'new int[] {0, 1};' 이다.
이 문제는 Map<Integer, Integer> 자료형을 이용하여 O(n)에 풀이할 수 있다.
인덱스를 조회할때 마다 조건에 대해 판별하고 조건에 부합하면 return 아니면 Map에 데이터를 추가하는 형식으로 진행.
if (map.contains(target - nums[someIdx]))
return new int[] {map.get(target - nums[someIdx]), someIdx};
map.put(nums[someIdx], someIdx);
O(n) 만큼의 반복을 통해 조건 검색
public int[] solution(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if (map.contains(target - nums[i]))
return new int[] {map.get(target - nums[i]), i};
map.put(nums[i], i);`
}
return null;
}
'Data Structures and Algorithms > Problems' 카테고리의 다른 글
LeetCode 24. Swap Nodes in Pairs, 페어의 노드 스왑 (0) | 2024.08.04 |
---|---|
LeetCode 15.3Sum (0) | 2024.07.28 |
LeetCode 스택과 큐 225. Implement Stack using Queues, 232. Implement Queue using Stacks (0) | 2024.07.26 |
LeetCode 739.Daily Temperatures (0) | 2024.07.26 |
LeetCode 316.Remove Duplicate Letters (0) | 2024.07.25 |