描述
给你一个嵌套的列表,实现一个迭代器将其摊平。
一个列表的每个元素可能是整数或者一个列表。
You don't need to implement the remove method.
您在真实的面试中是否遇到过这个题? 是
样例
给出列表 [[1,1],2,[1,1]]
,经过迭代器之后返回 [1,1,2,1,1]
。
给出列表 [1,[4,[6]]]
,经过迭代器之后返回 [1,4,6]
。
实现代码:
对输出元素进行判断,如果是list就展开
"""
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 {boolean} True if this NestedInteger holds a single integer,
# rather than a nested list.
def getInteger(self):
# @return {int} the single integer that this NestedInteger holds,
# if it holds a single integer
# Return None if this NestedInteger holds a nested list
def getList(self):
# @return {NestedInteger[]} the nested list that this NestedInteger holds,
# if it holds a nested list
# Return None if this NestedInteger holds a single integer
"""
class NestedIterator(object):
def __init__(self, nestedList):
# Initialize your data structure here.
self.stack = nestedList[::-1]
# @return {int} the next element in the iteration
def next(self):
# Write your code here
return self.stack.pop().getInteger()
# @return {boolean} true if the iteration has more element or false
def hasNext(self):
# Write your code here
while self.stack:
top = self.stack[-1]
if top.isInteger():
return True
self.stack = self.stack[:-1] + top.getList()[::-1]
return False
# Your NestedIterator object will be instantiated and called as such:
# i, v = NestedIterator(nestedList), []
# while i.hasNext(): v.append(i.next())