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.
Example 1:
Given the list [[1,1],2,[1,1]],
By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,1,2,1,1].
Example 2:
Given the list [1,[4,[6]]],
By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,4,6].
解法1: Stack, O(N) Time, O(N) Space, N is the number of total items
这题是用iteration的办法解决递归的问题,一般此类问题容易想到用stack解决。这题哪里可以用stack呢?每一个nestedInteger都可能是一个list of nestedInteger, 那么我们对于每一个元素,如果是单数,则任务完成,如果是一个list, 那么我们把所有的元素都推入栈中,直到第一个元素是单数或者到遍历结束为止。 由于栈是FILO, 所以每次推入的时候需要从后往前推。
|
|
|
|