From 00d88fd14ce5fef5fb5a7184666e9a9c7c753855 Mon Sep 17 00:00:00 2001 From: eunhwa99 Date: Mon, 30 Jun 2025 19:39:00 +0900 Subject: [PATCH 1/2] Binary Tree Level Order Traversal --- binary-tree-level-order-traversal/eunhwa99.kt | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 binary-tree-level-order-traversal/eunhwa99.kt diff --git a/binary-tree-level-order-traversal/eunhwa99.kt b/binary-tree-level-order-traversal/eunhwa99.kt new file mode 100644 index 000000000..2cca93137 --- /dev/null +++ b/binary-tree-level-order-traversal/eunhwa99.kt @@ -0,0 +1,33 @@ +// https://leetcode.com/problems/binary-tree-level-order-traversal/description/ +/** + * Example: + * var ti = TreeNode(5) + * var v = ti.`val` + * Definition for a binary tree node. + * class TreeNode(var `val`: Int) { + * var left: TreeNode? = null + * var right: TreeNode? = null + * } + */ +class Solution { + fun levelOrder(root: TreeNode?): List> { + val result = mutableListOf>() + if(root == null) return result + + val queue: ArrayDeque = ArrayDeque() + queue.add(root) + + while (queue.isNotEmpty()) { + val levelSize = queue.size + val level = mutableListOf() + repeat(levelSize) { + val node = queue.removeFirst() + level.add(node.`val`) + node.left?.let { queue.add(it) } + node.right?.let { queue.add(it) } + } + result.add(level) + } + return result + } +} From 42c0b2e83cc6dee6ea9143ef9a61e83894fb1039 Mon Sep 17 00:00:00 2001 From: eunhwa99 Date: Thu, 3 Jul 2025 21:59:45 +0900 Subject: [PATCH 2/2] house robber 2 --- house-robber-ii/eunhwa99.kt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 house-robber-ii/eunhwa99.kt diff --git a/house-robber-ii/eunhwa99.kt b/house-robber-ii/eunhwa99.kt new file mode 100644 index 000000000..ca05efbf2 --- /dev/null +++ b/house-robber-ii/eunhwa99.kt @@ -0,0 +1,19 @@ +// https://leetcode.com/problems/house-robber-ii/description/ +class Solution { + fun rob(nums: IntArray): Int { + if (nums.size == 1) return nums[0] + return maxOf(rob(nums, 0, nums.size - 2), rob(nums, 1, nums.size - 1)) + } + + private fun rob(nums: IntArray, start: Int, end: Int): Int { + val dp = IntArray(nums.size) { 0 } + dp[start] = nums[start] + dp[start + 1] = maxOf(nums[start], nums[start + 1]) + for (i in start + 2..end) { + dp[i] = maxOf(dp[i - 1], dp[i - 2] + nums[i]) + } + return dp[end] + } +} +// TC: O(n) +// SC: O(n)