首页 > 学院 > 开发设计 > 正文

341. Flatten Nested List Iterator

2019-11-06 06:55:30
字体:
来源:转载
供稿:网友

提交了两次才AC,被困于[]这种情况。当stack处理过程中为空时,要return false;

/** * // 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 {PRivate: stack<NestedInteger> helper;public: NestedIterator(vector<NestedInteger> &nestedList) { for(int i=nestedList.size()-1;i>=0;i--) helper.push(nestedList[i]); } int next() { int temp=helper.top().getInteger(); helper.pop(); return temp; } bool hasNext() { while((!helper.empty())&&!(helper.top().isInteger())) { vector<NestedInteger> tempList=helper.top().getList(); helper.pop(); for(int i=tempList.size()-1;i>=0;i--) helper.push(tempList[i]); } if(helper.empty()) return false; else return true; }};/** * Your NestedIterator object will be instantiated and called as such: * NestedIterator i(nestedList); * while (i.hasNext()) cout << i.next(); */
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表