From 5183eb0cd19f91aa0260b428b97a71fedc702142 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Sun, 1 Jun 2025 15:57:24 +0100 Subject: [PATCH 1/2] add 341 --- .../github/contest/design/DesignLeetcode.kt | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt b/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt index cf8cc40..2145960 100644 --- a/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt +++ b/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt @@ -245,4 +245,46 @@ class CombinationIterator(characters: String, combinationLength: Int) { combine(index + 1, str, subset, store, limit) } +} + +/** + * 341. Flatten Nested List Iterator + */ + +class NestedInteger { + fun getInteger(): Int? { + return null + } + + fun getList(): List? { + return null + } +} + +class NestedIterator(nestedList: List) { + + private val store = mutableListOf() + + init { + nestedList.forEach { + dfs(it) + } + } + + private fun dfs(obj: NestedInteger) { + val action = obj.getInteger() + if (action != null) { + store.add(action) + return + } + + obj.getList()?.forEach { + dfs(it) + } + } + + + fun next(): Int = store.removeFirst() + + fun hasNext(): Boolean = store.isNotEmpty() } \ No newline at end of file From 661f4d7c7ee51ebcd0ebbd6aa4c57470ed5c4857 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Sun, 1 Jun 2025 16:39:19 +0100 Subject: [PATCH 2/2] add 341 --- .../design/DesignAlternativeSolution.kt | 29 +++++++++++++++++++ .../github/contest/design/DesignLeetcode.kt | 3 ++ 2 files changed, 32 insertions(+) create mode 100644 contest/src/main/java/com/github/contest/design/DesignAlternativeSolution.kt diff --git a/contest/src/main/java/com/github/contest/design/DesignAlternativeSolution.kt b/contest/src/main/java/com/github/contest/design/DesignAlternativeSolution.kt new file mode 100644 index 0000000..05a2edc --- /dev/null +++ b/contest/src/main/java/com/github/contest/design/DesignAlternativeSolution.kt @@ -0,0 +1,29 @@ +package com.github.contest.design + +/** + * 341. Flatten Nested List Iterator + * Alternative Solution + */ + +class NestedIteratorAlternativeSolution(nestedList: List) { + + private val stack = ArrayDeque().apply { + nestedList.reversed().forEach { addFirst(it) } + } + + fun next(): Int { + if (!hasNext()) throw NoSuchElementException() + return stack.removeFirst().getInteger()!! + } + + fun hasNext(): Boolean { + while (stack.isNotEmpty()) { + val top = stack.first() + if (top.isInteger()) { + return true + } + stack.removeFirst().getList()?.reversed()?.forEach { stack.addFirst(it) } + } + return false + } +} \ No newline at end of file diff --git a/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt b/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt index 2145960..2239dd1 100644 --- a/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt +++ b/contest/src/main/java/com/github/contest/design/DesignLeetcode.kt @@ -252,6 +252,9 @@ class CombinationIterator(characters: String, combinationLength: Int) { */ class NestedInteger { + + fun isInteger() = true + fun getInteger(): Int? { return null }