【題目描述】
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)。
【參考答案】