[LintCode] Flatten Nested List Iterator 压平嵌套链表迭代器
Given a nested list of integers, implement an iterator to flatten it.
Each element is either an integer, or a list -- whose elements may also be integers or other lists.
Example
Given the list [[1,1],2,[1,1]], By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,1,2,1,1].
Given the list [1,[4,[6]]], By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,4,6].
LeetCode上的原题,请参见我之前的博客Flatten Nested List Iterator。但是不太明白的是,那篇博客中的解法三可以通过LeetCode的OJ,在LintCode上跑就有错误,不知道啥原因。
解法一:
class NestedIterator {
public:
    NestedIterator(vector<NestedInteger> &nestedList) {
        for (int i = nestedList.size() - ; i >= ; --i) {
            s.push(nestedList[i]);
        }
    }
    int next() {
        NestedInteger t = s.top(); s.pop();
        return t.getInteger();
    }
    bool hasNext() {
        while (!s.empty()) {
            NestedInteger t = s.top();
            if (t.isInteger()) return true;
            s.pop();
            for (int i = t.getList().size() - ; i >= ; --i) {
                s.push(t.getList()[i]);
            }
        }
        return false;
    }
private:
    stack<NestedInteger> s;
};
解法二:
class NestedIterator {
public:
    NestedIterator(vector<NestedInteger> &nestedList) {
        for (auto a : nestedList) {
            d.push_back(a);
        }
    }
    int next() {
        NestedInteger t = d.front(); d.pop_front();
        return t.getInteger();
    }
    bool hasNext() {
        while (!d.empty()) {
            NestedInteger t = d.front();
            if (t.isInteger()) return true;
            d.pop_front();
            for (int i = ; i < t.getList().size(); ++i) {
                d.insert(d.begin() + i, t.getList()[i]);
            }
        }
        return false;
    }
private:
    deque<NestedInteger> d;
};
[LintCode] Flatten Nested List Iterator 压平嵌套链表迭代器的更多相关文章
- [LeetCode] Flatten Nested List Iterator 压平嵌套链表迭代器
		Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ... 
- [LeetCode] 341. Flatten Nested List Iterator 压平嵌套链表迭代器
		Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ... 
- [Swift]LeetCode341. 压平嵌套链表迭代器 | Flatten Nested List Iterator
		Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ... 
- [leetcode]341. Flatten Nested List Iterator展开嵌套列表的迭代器
		Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ... 
- [LeetCode] Nested List Weight Sum 嵌套链表权重和
		Given a nested list of integers, return the sum of all integers in the list weighted by their depth. ... 
- 【LeetCode】341. Flatten Nested List Iterator 解题报告(Python&C++)
		作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归+队列 栈 日期 题目地址:https://lee ... 
- Leetcode: Flatten Nested List Iterator
		Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ... 
- Flatten Nested List Iterator
		Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ... 
- Design-341. Flatten Nested List Iterator
		Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ... 
随机推荐
- C++ find 函数用法
			头文件 #include <algorithm> 函数实现 template<class InputIterator, class T> InputIterator find ... 
- hdfs 名称节点和数据节点
			名字节点(NameNode )是HDFS主从结构中主节点上运行的主要进程,它指导主从结构中的从节点,数据节点(DataNode)执行底层的I/O任务. 名字节点是HDFS的书记员,维护着整个文件系统的 ... 
- Jmeter 检查点
			Jmeter的检查点就是插入个断言,但用下来不好用,没LR好用,先放放. 
- aChartEngine图表显示(一页显示多张图表)
			在看本篇的时候,请确认已经看过了 某android平板项目开发笔记----aChartEngine图表显示(1) 不然,有些地方这里就不再说明… 关于XYMutilpleSeriesDataset 一 ... 
- LoadRunner下载文件脚本
			LoadRunner下载文件脚本 在看普泽关于pezybase的测试报告的时候,发现里面有用到jmeter(http协议)并发测试下载文件,考虑到后面可能需要在公司pezybase的并发下载,把之前 ... 
- Android拓展系列(12)--使用Gradle发布aar项目到JCenter仓库
			目的 发布自己的android library(也就是aar)到公共的jcenter仓库,所有的人都能用gradle最简单的方式引用. 为什么选择jcenter,它兼容maven,而且支持更多形式仓库 ... 
- Uva 11059 Maximum Product
			注意long long long long longlong !!!!!! 还有 printf的时候 明明longlong型的答案 用了%d WA了也看不出,这个细节要注意!!! #incl ... 
- POJ 1226 后缀数组
			题目链接:http://poj.org/problem?id=1226 题意:给定n个字符串[只含大小写字母],求一个字符串要求在n个串或者他们翻转后的串的出现过.输出满足要求的字符串的长度 思路:根 ... 
- DSP using MATLAB示例 Example3.5
			代码: n = [0:10]; x = (0.9*exp(j*pi/3)).^n; % x(n) = k = -200:200; w = (pi/100)*k; % [0,pi] axis divid ... 
- express-13 中间件
			简介 从概念上讲,中间件是一种功能的封装方式,具体来说就是封装在程序中处理HTTP请求的功能. 中间件是在管道中执行的,在Express程序中,通过调用app.use向管道中插入中间件.(在Expre ... 
