Skip to content

Commit 4bf596e

Browse files
author
이연수
committed
two sum
1 parent 4c8b68f commit 4bf596e

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

two-sum/EcoFriendlyAppleSu.kt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package leetcode_study
2+
3+
/**
4+
* 주어진 숫자 배열에서 두 개의 숫자를 더해 Target을 만들 수 있는 배열의 Index를 구하는 문제
5+
* 조합을 사용해 문제 해결
6+
* 시간 복잡도: O(n^2)
7+
* -> 두 번의 순회를 통해 모든 경우의 수를 계산하는 경우
8+
* 공간 복잡도: O(1)
9+
* -> 결과를 저장하는 result, 배열의 index를 가리키는 indices는 두 개의 값을 담기 때문에 O(1)
10+
*/
11+
fun twoSum(nums: IntArray, target: Int): IntArray {
12+
val result = IntArray(2)
13+
val k = 2
14+
val maxSize = nums.size
15+
val indices = IntArray(k)
16+
for (i in 0 until k ) {
17+
indices[i] = i
18+
}
19+
20+
while (indices[k-1] < maxSize) {
21+
if (nums[indices[0]] + nums[indices[1]] == target) {
22+
result[0] = indices[0]
23+
result[1] = indices[1]
24+
return result
25+
}
26+
27+
var i = k - 1
28+
while (i >= 0 && indices[i] == i + maxSize - k) {
29+
i--
30+
}
31+
32+
if (i >= 0) {
33+
indices[i]++
34+
for (j in i + 1 until k) {
35+
indices[j] = indices[j - 1] + 1
36+
}
37+
} else {
38+
break
39+
}
40+
}
41+
return result
42+
}

0 commit comments

Comments
 (0)