Skip to main content

341. Flatten Nested List Iterator

https://leetcode.com/problems/flatten-nested-list-iterator/

Python

Recursive Generator

class NestedIterator:
def __init__(self, nestedList: [NestedInteger]):
self.iteral = self._generator(nestedList)
self.temp = None

def _generator(self, obj):
if isinstance(obj, list):
for item in obj:
yield from self._generator(item)
else:
if obj.isInteger():
yield obj.getInteger()
else:
for item in obj.getList():
yield from self._generator(item)

def next(self) -> int:
if self.temp is not None:
result, self.temp = self.temp, None
return result
return next(self.iteral)

def hasNext(self) -> bool:
if self.temp is not None:
return True

try:
self.temp = next(self.iteral)
return True
except StopIteration:
return False