難度:中等
題目描述:
思路總結:
方法一:用遞迴扁平化整個list
方法二:用棧在呼叫hasnext()的時候找到下乙個元素
題解一:
# """
# this is the inte***ce that allows for creating nested lists.
# you should not implement it, or speculate about its implementation
# """
#class nestedinteger:
# def isinteger(self) -> bool:
# """
# @return true if this nestedinteger holds a single integer, rather than a nested list.
# """
## def getinteger(self) -> int:
# """
# @return 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) -> [nestedinteger]:
# """
# @return the nested list that this nestedinteger holds, if it holds a nested list
# return none if this nestedinteger holds a single integer
# """
from collections import deque
class
nestediterator
:def
__init__
(self, nestedlist:
[nestedinteger]):
self.queue = deque(
)def
visit
(ls)
:for obj in ls:
if obj.isinteger():
))else
: visit(obj.getlist())
visit(nestedlist)
defnext
(self)
->
int:
return self.queue.popleft(
)def
hasnext
(self)
->
bool
:return
len(self.queue)
>
0# your nestediterator object will be instantiated and called as such:
# i, v = nestediterator(nestedlist),
341 扁平化巢狀列表迭代器
給定乙個巢狀的整型列表。設計乙個迭代器,使其能夠遍歷這個整型列表中的所有整數。列表中的項或者為乙個整數,或者是另乙個列表。示例 1 輸入 1,1 2,1,1 輸出 1,1,2,1,1 解釋 通過重複呼叫 next 直到 hasnext 返回false,next 返回的元素的順序應該是 1,1,2,1...
341 扁平化巢狀列表迭代器
題目描述 給你乙個巢狀的整型列表。請你設計乙個迭代器,使其能夠遍歷這個整型列表中的所有整數。列表中的每一項或者為乙個整數,或者是另乙個列表。其中列表的元素也可能是整數或是其他列表。示例 1 輸入 1,1 2,1,1 輸出 1,1,2,1,1 解釋 通過重複呼叫 next 直到 hasnext 返回 ...
341 扁平化巢狀列表迭代器 惰性載入
扁平化巢狀列表迭代器 給你乙個巢狀的整型列表。請你設計乙個迭代器,使其能夠遍歷這個整型列表中的所有整數。列表中的每一項或者為乙個整數,或者是另乙個列表。其中列表的元素也可能是整數或是其他列表。示例 1 輸入 1,1 2,1,1 輸出 1,1,2,1,1 解釋 通過重複呼叫 next 直到 hasne...