/** * // This is the interface that allows for creating nested lists. * // You should not implement it, or speculate about its implementation * class NestedInteger { * public: * // Return true if this NestedInteger holds a single integer, rather than a nested list. * bool isInteger() const; * * // Return the single integer that this NestedInteger holds, if it holds a single integer * // The result is undefined if this NestedInteger holds a nested list * int getInteger() const; * * // Return the nested list that this NestedInteger holds, if it holds a nested list * // The result is undefined if this NestedInteger holds a single integer * const vector<NestedInteger> &getList() const; * }; */ classNestedIterator { public: NestedIterator(vector<NestedInteger>& nestedList) { this->index = 0; this->list = newvector<int>(); this->parse(nestedList); this->length = this->list->size(); } voidparse(vector<NestedInteger>& nestedList){ for(int i = 0; i < nestedList.size(); i++){ if(nestedList[i].isInteger() == true) this->list->push_back(nestedList[i].getInteger()); elsethis->parse(nestedList[i].getList()); } }
intnext(){ int ret = (*this->list)[index]; this->index += 1; return ret; }
boolhasNext(){ returnthis->index < this->length; } private: vector<int>* list; int index; int length; };
/** * Your NestedIterator object will be instantiated and called as such: * NestedIterator i(nestedList); * while (i.hasNext()) cout << i.next(); */