# [341. Flatten Nested List Iterator](https://leetcode.com/problems/flatten-nested-list-iterator/) # 思路 这道题让我们将嵌套链表压平。 思路很简单,因为链表的元素可能还是链表,所以是个递归(或者用栈转成非递归),我们先创建一个记录压平后所有元素的全局数组nums, 然后定义helper递归函数,传入一个`NestedInteger`记为`nest`: * 若`nest.isInteger() == True`,即`nest`是个数,将`nest.getInteger()`push进nums即可; * 否则,即`nest`是个列表,那么对`nest.getList()`的每个元素递归调用helper。 NestedIterator构造函数里面,我们对nestedList每个元素调用一下`helper`以建立nums,建立好nums后,`hasNext()`和`next()`就好写了。 # C++ ``` C++ class NestedIterator { private: int cur_index, size; vectornums; void helper(NestedInteger &nest){ if(nest.isInteger()) nums.push_back(nest.getInteger()); else{ auto &list = nest.getList(); for(auto &a: list) helper(a); } } public: NestedIterator(vector &nestedList) { cur_index = 0; for(auto & a: nestedList) helper(a); size = nums.size(); } int next() { return nums[cur_index++]; } bool hasNext() { return cur_index < size; } }; ```