递归,queue,const vector; 这道题应该:
看懂题意;想到用queue;还有就是函数传入的参数不是const vector,但是如果传入的是const vector的话就会出错。C++代码:
/** * // 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; * }; */class NestedIterator {public: queue<int> v; //auto = v.begin(); NestedIterator(vector<NestedInteger> &nestedList) { // Initialize your data structure here. PRocess(nestedList,v); } void process(const vector<NestedInteger> &nestedList, queue<int> &v){ int len = nestedList.size(); if (len == 0) { return; } for (int i=0; i<len ; i++) { if (nestedList[i].isInteger()) { v.push(nestedList[i].getInteger()); } else { process(nestedList[i].getList(),v); } } }; // @return {int} the next element in the iteration int next() { // Write your code here int temp = v.front(); v.pop(); return temp; } // @return {boolean} true if the iteration has more element or false bool hasNext() { if (!v.empty()) { return true; } return false; }};/** * Your NestedIterator object will be instantiated and called as such: * NestedIterator i(nestedList); * while (i.hasNext()) v.push_back(i.next()); */新闻热点
疑难解答