解题思路:
这里需要注意,初始化的时候输入的nestedList里面的元素是上面的注释的定义的类别的实例。注意调用其中的方法,其余的就比较简单了。
具体代码如下:
# """
# This is the interface that allows for creating nested lists.
# You should not implement it, or speculate about its implementation
# """
#class NestedInteger(object):
# def isInteger(self):
# """
# @return True if this NestedInteger holds a single integer, rather than a nested list.
# :rtype bool
# """
#
# def getInteger(self):
# """
# @return the single integer that this NestedInteger holds, if it holds a single integer
# Return None if this NestedInteger holds a nested list
# :rtype int
# """
#
# def getList(self):
# """
# @return the nested list that this NestedInteger holds, if it holds a nested list
# Return None if this NestedInteger holds a single integer
# :rtype List[NestedInteger]
# """
class NestedIterator(object):
def __init__(self, nestedList):
"""
Initialize your data structure here.
:type nestedList: List[NestedInteger]
"""
self.data = []
self.get_data(nestedList, self.data)
self.ptr = 0
def get_data(self, nestedList, _data):
for sample in nestedList:
if sample.isInteger():
_data.append(sample.getInteger())
else:
self.get_data(sample.getList(), _data)
def next(self):
"""
:rtype: int
"""
res = self.data[self.ptr]
self.ptr += 1
return res
def hasNext(self):
"""
:rtype: bool
"""
if self.ptr == len(self.data):
return False
return True
# Your NestedIterator object will be instantiated and called as such:
# i, v = NestedIterator(nestedList), []
# while i.hasNext(): v.append(i.next())