遞歸,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()); */新聞熱點
疑難解答