博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
341. Flatten Nested List Iterator
阅读量:5050 次
发布时间:2019-06-12

本文共 2121 字,大约阅读时间需要 7 分钟。

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 1:

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].

 

Example 2:

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].

解题思路:借助一个栈把所有的元素先倒序存进去,每出来一个看是否是整数,如果不是依然倒序存进去,否则直接把这个数返回即可。

/** * // 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
&getList() const; * }; */class NestedIterator {public: NestedIterator(vector
&nestedList) { for(int i = nestedList.size() - 1; i >= 0; i--) { s.push(nestedList[i]); } } int next() { NestedInteger top = s.top(); s.pop(); return top.getInteger(); } bool hasNext() { while(!s.empty()) { NestedInteger top = s.top(); if(top.isInteger())return true; s.pop(); for(int i = top.getList().size() - 1; i >= 0; i--) { s.push(top.getList()[i]); } } return false; }private: stack
s;};/** * Your NestedIterator object will be instantiated and called as such: * NestedIterator i(nestedList); * while (i.hasNext()) cout << i.next(); */

 

转载于:https://www.cnblogs.com/tsunami-lj/p/7681187.html

你可能感兴趣的文章
面向对象1
查看>>
在ns2.35中添加myevalvid框架
查看>>
【贪心+DFS】D. Field expansion
查看>>
为什么要使用href=”javascript:void(0);”
查看>>
二进制文件的查看和编辑
查看>>
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
javascript学习---BOM
查看>>
IOS-每个程序员的编程之路上都应该看这11本书
查看>>
自定义tabbar(纯代码)
查看>>
extjs fieldset 和 radio
查看>>
小程序底部导航栏
查看>>
Codeforces Gym101505G:Orchard Division(扫描线+线段树第k大)
查看>>
ibatis学习笔记
查看>>
18-ES6(1)
查看>>
poj1611 简单并查集
查看>>
tensorflow实现迁移学习
查看>>
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>