Skip to content

Commit f460daf

Browse files
committed
ZigzagGenerator,ZigzagIterator
1 parent 28c8764 commit f460daf

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

leetcode-test.iml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<content url="file://$MODULE_DIR$" dumb="true">
55
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" packagePrefix="com.github.masx200.leetcode_test" />
66
<sourceFolder url="file://$MODULE_DIR$" isTestSource="false" packagePrefix="com.github.masx200.leetcode_test" />
7+
<sourceFolder url="file://$MODULE_DIR$/zigzag-iterator" isTestSource="false" packagePrefix="com.github.masx200.leetcode_test.zigzag_iterator" />
78
<excludeFolder url="file://$MODULE_DIR$/target" />
89
</content>
910
</component>

zigzag-iterator/ZigzagIterator.kt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.github.masx200.leetcode_test.com.github.leetcode_test.zigzag_iterator
2+
3+
4+
private fun ZigzagGenerator(v1: List<Int>, v2: List<Int>): Sequence<Int> = sequence<Int> {
5+
if (v1.size < v2.size) {
6+
for (i in 0 until v1.size) {
7+
yield(v1[i])
8+
9+
yield(v2[i])
10+
}
11+
for (i in v1.size until v2.size) {
12+
yield(v2[i])
13+
14+
}
15+
} else {
16+
yieldAll(ZigzagGenerator(v2, v1))
17+
}
18+
19+
}
20+
21+
class ZigzagIterator(v1: List<Int>, v2: List<Int>) {
22+
23+
24+
private val generator = ZigzagGenerator(v1, v2)
25+
26+
27+
private val iterator = generator.iterator()
28+
fun next(): Int {
29+
return iterator.next()
30+
}
31+
32+
fun hasNext(): Boolean {
33+
return iterator.hasNext()
34+
}
35+
}

0 commit comments

Comments
 (0)