Skip to content

Commit 80d7849

Browse files
authored
Improved task 225
1 parent 5943a79 commit 80d7849

File tree

1 file changed

+22
-45
lines changed
  • src/main/kotlin/g0201_0300/s0225_implement_stack_using_queues

1 file changed

+22
-45
lines changed

src/main/kotlin/g0201_0300/s0225_implement_stack_using_queues/MyStack.kt

Lines changed: 22 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,43 @@
11
package g0201_0300.s0225_implement_stack_using_queues
22

3-
// #Easy #Stack #Design #Queue #2022_10_26_Time_248_ms_(73.44%)_Space_36.1_MB_(43.75%)
3+
// #Easy #Stack #Design #Queue #2024_08_17_Time_147_ms_(88.57%)_Space_35.9_MB_(87.62%)
44

55
import java.util.LinkedList
6+
import java.util.Queue
67

7-
class MyStack {
8-
private var queuePair = Pair(LinkedList<Int>(), LinkedList<Int>())
9-
private var top: Int? = null
8+
class MyStack() {
9+
private val queue1: Queue<Int> = LinkedList()
10+
private val queue2: Queue<Int> = LinkedList()
1011

1112
fun push(x: Int) {
12-
queuePair.first.addLast(x)
13-
top = x
13+
queue1.add(x)
1414
}
1515

1616
fun pop(): Int {
17-
if (isQueuesEmpty()) {
18-
throw Exception()
17+
while (queue1.size > 1) {
18+
queue2.add(queue1.remove())
1919
}
20-
val queuePair = selectSourceAndDestinationQueues(queuePair)
21-
var value = 0
22-
repeat(queuePair.first.size) {
23-
when (queuePair.first.size) {
24-
2 -> {
25-
top = queuePair.first.removeFirst()
26-
queuePair.second.addLast(top)
27-
}
28-
1 -> {
29-
value = queuePair.first.removeFirst()
30-
}
31-
else -> {
32-
queuePair.second.addLast(queuePair.first.removeFirst())
33-
}
34-
}
35-
}
36-
return value
20+
val top = queue1.remove()
21+
queue1.clear()
22+
queue1.addAll(queue2)
23+
queue2.clear()
24+
return top
3725
}
3826

3927
fun top(): Int {
40-
if (isQueuesEmpty()) {
41-
throw Exception()
28+
while (queue1.size > 1) {
29+
queue2.add(queue1.remove())
4230
}
43-
return top!!
31+
val top = queue1.remove()
32+
queue2.add(top)
33+
queue1.clear()
34+
queue1.addAll(queue2)
35+
queue2.clear()
36+
return top
4437
}
4538

4639
fun empty(): Boolean {
47-
return isQueuesEmpty()
48-
}
49-
50-
private fun isQueuesEmpty(): Boolean {
51-
if (queuePair.first.isEmpty() && queuePair.second.isEmpty()) {
52-
return true
53-
}
54-
return false
55-
}
56-
57-
private fun selectSourceAndDestinationQueues(queuePair: Pair<LinkedList<Int>, LinkedList<Int>>):
58-
Pair<LinkedList<Int>, LinkedList<Int>> {
59-
return if (queuePair.first.isNotEmpty()) {
60-
Pair(queuePair.first, queuePair.second)
61-
} else {
62-
Pair(queuePair.second, queuePair.first)
63-
}
40+
return queue1.isEmpty()
6441
}
6542
}
6643

0 commit comments

Comments
 (0)