341 扁平化巢狀列表迭代器

2021-10-02 04:52:39 字數 1802 閱讀 8817

難度:中等

題目描述:

思路總結

方法一:用遞迴扁平化整個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...