leetcode--341扁平化嵌套列表迭代器(001)

给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。
列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。
示例 1:
输入: [[1,1],2,[1,1]]
输出: [1,1,2,1,1]
解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。

示例 2:
输入: [1,[4,[6]]]
输出: [1,4,6]
解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,4,6]。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/flatten-nested-list-iterator

方法:参考博客园方法1:https://www.cnblogs.com/grandyang/p/5358793.html
这道题一开始不是很理解,所以参考博客园也是很懵。
其实这道题主要要搞清楚,题目中的定义。
bool isInteger() const; 如果是单独的一个整数,则返回true;
int getInteger() const;如果是单独的一个整数,返回整数,其他的情况不作操作。
const vector < NestedInteger >&getList()const;如果它拥有嵌套列表,则返回此时的嵌套列表,其他的情况不作操作。
明白了这三个定义,对整个代码的逻辑编写很有帮助。
程序开始前,先创建一个栈,栈的类型是NestedInteger,也就是嵌套列表的类型
(1)将嵌套列表放入栈中,注意是倒序放入,因为我们要先处理嵌套列表的第一个元素,按照栈后进先出的原则,就可以处理第一个元素。
(2)hasnext函数:如果栈为空,false结束。如果不为空,得到栈顶元素,判断栈顶元素是否为单个整数,如果是去执行next函数,如果不是弹出栈顶,然后用getList()函数去把刚弹出的栈顶元素(必须是嵌套列表,否则不操作,这一步将把嵌套去掉一层)处理后重新压入栈中(注意是倒序放入),循环操作。
(3)next函数:得到栈顶元素,然后弹出栈顶。如果是单个整数,输出,否则不作操作。
代码:

/**
 * // This is the interface that allows for creating 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值