【题目描述】
Given a nested list of integers, implement an iterator to flatten it.
Each element is either an integer, or a list -- whose elements may also be integers or other lists.
Notice
You don't need to implement the remove method.
给你一个嵌套的列表,实现一个迭代器将其摊平。
一个列表的每个元素可能是整数或者一个列表。
注意事项
你不需要实现remove方法。
【题目链接】
www.lintcode.com/en/problem/flatten-nested-list-iterator/
【题目解析】
这道题要求用迭代的方式。
迭代可以利用stack来完成。先将list中所有元素从后往前压入栈中。在hasNext()中,首先判断栈是否为空,若不为空再判断栈顶元素是整数还是list,若是整数则返回true,若是list则移除栈顶元素,并将其中元素按从后往前压入栈中,并再次从头执行hasNext的步骤,直到栈为空则返回false。next则直接取出栈顶元素并返回其值(根据hasNext,一定为整数而非list)。
【参考答案】