-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path341_flatten_nested_list_iterator.rb
More file actions
54 lines (43 loc) · 961 Bytes
/
Copy path341_flatten_nested_list_iterator.rb
File metadata and controls
54 lines (43 loc) · 961 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# frozen_string_literal: true
# https://leetcode.com/problems/flatten-nested-list-iterator/
class NestedIterator
# @param {NestedInteger[]} nested_list
def initialize(nested_list)
@values = []
@pointer = 0
prepare(nested_list)
end
# @return {Boolean}
def has_next = @pointer < @values.size
# @return {Integer}
def next
val = @values[@pointer]
@pointer += 1
val
end
private
# @param {NestedInteger[]} nested_list
# @return {Integer[]}
def prepare(nested_list)
nested_list.each do |num|
if num.is_integer
@values << num.get_integer
else
prepare(num.get_list)
end
end
end
end
# NestedInteger for NestedIterator
class NestedInteger
# @param {NestenInteger} num
def initialize(num)
@num = num
end
# @return {Boolean}
def is_integer = @num.is_a?(::Integer)
# @return {Integer}
def get_integer = @num
# @return {Array}
def get_list = @num
end