Lintcode528 Flatten Nested List

2018-04-29  本文已影响0人  程风破浪会有时

【题目描述】

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)。

【参考答案】

www.jiuzhang.com/solutions/flatten-nested-list-iterator/

上一篇 下一篇

猜你喜欢

热点阅读