Skip to content

Commit a68ca36

Browse files
Merge pull request #1738 from hyunjung-choi/main
[hyunjung-choi] WEEK 02 solutions
2 parents 32d80da + 8e0008d commit a68ca36

File tree

5 files changed

+116
-0
lines changed

5 files changed

+116
-0
lines changed

3sum/hyunjung-choi.kt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Solution {
2+
fun threeSum(nums: IntArray): List<List<Int>> {
3+
if (nums.size < 3) return emptyList()
4+
5+
val result = mutableSetOf<List<Int>>()
6+
7+
nums.sort()
8+
9+
for (i in 0 until nums.size - 2) {
10+
11+
if (i > 0 && nums[i] == nums[i - 1]) continue
12+
13+
var left = i + 1
14+
var right = nums.size - 1
15+
16+
while (left < right) {
17+
val sum = nums[i] + nums[left] + nums[right]
18+
19+
when {
20+
sum == 0 -> {
21+
result.add(listOf(nums[i], nums[left], nums[right]))
22+
23+
left++
24+
right--
25+
}
26+
27+
sum < 0 -> left++
28+
else -> right--
29+
}
30+
}
31+
}
32+
33+
return result.toList()
34+
}
35+
}

climbing-stairs/hyunjung-choi.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
fun climbStairs(n: Int): Int {
3+
if (n <= 2) return n
4+
5+
var prev2 = 1
6+
var prev1 = 2
7+
8+
for (i in 3..n) {
9+
val current = prev1 + prev2
10+
prev2 = prev1
11+
prev1 = current
12+
}
13+
14+
return prev1
15+
}
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
fun productExceptSelf(nums: IntArray): IntArray =
3+
IntArray(nums.size) { 1 }.apply {
4+
var leftProduct = 1
5+
for (i in 1 until nums.size) {
6+
leftProduct *= nums[i - 1]
7+
this[i] = leftProduct
8+
}
9+
10+
var rightProduct = 1
11+
for (i in nums.size - 2 downTo 0) {
12+
rightProduct *= nums[i + 1]
13+
this[i] *= rightProduct
14+
}
15+
}
16+
}

valid-anagram/hyunjung-choi.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution {
2+
fun isAnagram(s: String, t: String): Boolean {
3+
if (s.length != t.length) return false
4+
5+
val charCount = mutableMapOf<Char, Int>()
6+
7+
s.forEach { ch ->
8+
charCount.put(ch, charCount.getOrDefault(ch, 0) + 1)
9+
}
10+
11+
t.forEach { ch ->
12+
val count = charCount.getOrDefault(ch, 0)
13+
if (count == 0) return false
14+
charCount[ch] = count - 1
15+
}
16+
17+
return true
18+
}
19+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* Example:
3+
* var ti = TreeNode(5)
4+
* var v = ti.`val`
5+
* Definition for a binary tree node.
6+
* class TreeNode(var `val`: Int) {
7+
* var left: TreeNode? = null
8+
* var right: TreeNode? = null
9+
* }
10+
*/
11+
class Solution {
12+
fun isValidBST(root: TreeNode?): Boolean {
13+
val values = mutableListOf<Int>()
14+
inorderTraversal(root, values)
15+
16+
for (i in 1 until values.size) {
17+
if (values[i] <= values[i - 1]) return false
18+
}
19+
20+
return true
21+
}
22+
23+
private fun inorderTraversal(root: TreeNode?, values: MutableList<Int>) {
24+
if (root == null) return
25+
26+
inorderTraversal(root.left, values)
27+
values.add(root.`val`)
28+
inorderTraversal(root.right, values)
29+
}
30+
}

0 commit comments

Comments
 (0)