[neetcode] Two Integer Sum
[neetcode] Two Integer Sum
난이도
- Easy
문제 설명
정수 배열 nums와 정수 target이 주어집니다. nums[i] + nums[j] == target이고 i != j인 인덱스 i와 j를 반환하세요.\n 모든 입력에는 이 조건을 만족하는 정확히 하나의 인덱스 쌍이 존재한다고 가정할 수 있습니다.\n 더 작은 인덱스가 먼저 오는 답을 반환하세요.
입력 형식
- 정수 배열
출력 형식
- 정수 배열
예제 입력 및 출력
1
2
3
4
**예제 1:**
입력: nums = [3, 4, 5, 6], target = 7
출력: [0, 1]
설명: nums[0] + nums[1] == 7이므로 [0, 1]을 반환합니다.
1
2
3
**예제 2:**
입력: nums = [4, 5, 6], target = 10
출력: [0, 2]
1
2
3
**예제 3:**
입력: nums = [5, 5], target = 10
출력: [0, 1]
접근 방법
- 해시맵 사용: 각 숫자와 그 인덱스를 저장하기 위해 해시맵을 사용합니다.
- 두 번째 반복: 배열을 다시 순회하면서 각 숫자의 보수를 계산하고, 해시맵에 해당 보수가 존재하는지 확인합니다.
- 인덱스 확인: 보수가 해시맵에 존재하고, 그 인덱스가 현재 인덱스와 다르면 결과를 반환합니다
시간 및 공간 복잡도
- 시간 복잡도: O(n) - 모든 배열을 한번 순회해야함
- 공간 복잡도 : O(1) - 해시맵을 사용하여 최대 n개의 요소를 저장해야 함
코드 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> numsMap = new HashMap<>();
for(int i = 0; i < nums.length;i++){
numsMap.put( nums[i],i);
}
for(int i = 0; i < nums.length;i++){
int minusValue = target - nums[i];
if(numsMap.containsKey(minusValue) && numsMap.get(minusValue) != i){
return new int[]{i, numsMap.get(minusValue)};
}
}
return new int[0];
}
}
This post is licensed under CC BY 4.0 by the author.