File tree Expand file tree Collapse file tree 1 file changed +16
-9
lines changed Expand file tree Collapse file tree 1 file changed +16
-9
lines changed Original file line number Diff line number Diff line change
1
+ // 배열을 한 번 도니 시간 복잡도 O(n)
2
+ // 최악의 경우 nums의 크기 배열만큼 증가하므로 공간 복잡도는 O(n)
3
+
1
4
const twoSum = ( nums , target ) => {
2
- // 배열을 한 번 순회
5
+ // {값: 인덱스} 형태로 저장
6
+ const indicies = { } ;
7
+
3
8
for ( let i = 0 ; i < nums . length ; i += 1 ) {
4
- // target숫자에서 현재 숫자를 뺀 숫자가 존재하는지 확인한다.
5
- const targetIndex = nums . indexOf ( target - nums [ i ] ) ;
6
- // targetIndex가 존재하고(-1이 아님), 현재 숫자와 같은 인덱스 숫자가 아니라면 반환한다.
7
- if ( targetIndex !== - 1 && i !== targetIndex ) {
8
- return [ i , targetIndex ] ;
9
+ // 타겟값에서 현재 가리키는 숫자를 뺀 값을 저장
10
+ const complement = target - nums [ i ] ;
11
+
12
+ // complement가 indicies안에 존재하면 해당 값을 반환
13
+ if ( complement in indicies ) {
14
+ const j = indicies [ complement ] ;
15
+ return [ j , i ] ;
9
16
}
17
+ // 존재 하지 않으면 값과 인덱스 형태로 저장 ex> { 11: 0, 15: 1, 2: 2 }
18
+ indicies [ nums [ i ] ] = i ;
19
+ console . log ( indicies ) ;
10
20
}
11
21
} ;
12
-
13
- // 시간 복잡도는 O(n^2)
14
- // 공간 복잡도는 O(1)
You can’t perform that action at this time.
0 commit comments