341. Flatten Nested List Iterator

来源:互联网 发布:怎么复制别人淘宝店铺 编辑:程序博客网 时间:2024/05/18 15:27

提交了两次才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(); */
0 0