leetcode.com/problems/two-sum-ii-input-array-is-sorted/
배열과 배열내 두 수의 값을 만들어야하는 타겟값을 입력받는다.
1. 배열을 순회한다.
2. Map에 ( 타겟값 - 배열의 내부의 값 ), 배열 인덱스로 값을 넣는다.
예를 들어 { 1,2,3,4} 인데 target 값이 3이라면 맨처음에는 3-1 이 키로 <2:0 >이 키 벨류로 들어간다.
3. 이제 배열 값과 맵의 키가 일치하는지에 따라 값을 꺼내오면 된다.
4.정답에서는 배열 인덱스 위치를 1부터 시작하기때문에 1을 더해준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.util.*;
class Solution {
public int[] twoSum(int[] numbers, int target) {
Map<Integer, Integer> map = new HashMap<>();
int[] result = new int[2];
for (int i = 0; i < numbers.length; i++) {
if (map.containsKey(numbers[i])) {
int before = map.get(numbers[i]);
result[0] = before + 1;
result[1] = i + 1;
} else {
map.put( target - numbers[i], i);
}
}
return result;
}
}
|
cs |
'알고리즘 > Array' 카테고리의 다른 글
Best Time to Buy and Sell Stock (0) | 2020.11.20 |
---|---|
Contains Duplicate (0) | 2020.11.20 |
나누어 떨어지는 숫자 배열 (0) | 2020.09.17 |
x만큼 간격이 있는 n개의 숫자 (0) | 2020.09.17 |
2016 (0) | 2020.09.09 |