341. Flatten Nested List Iterator
package LeetCode_341 /** * 341. Flatten Nested List Iterator * https://leetcode.com/problems/flatten-nested-list-iterator/description/ * * 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: Input: [[1,1],2,[1,1]] Output: [1,1,2,1,1] Explanation: By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,1,2,1,1]. * */ /** * // This is the interface that allows for creating nested lists. * // You should not implement it, or speculate about its implementation * class NestedInteger { * // Constructor initializes an empty nested list. * constructor() * * // Constructor initializes a single integer. * constructor(value: Int) * * // @return true if this NestedInteger holds a single integer, rather than a nested list. * fun isInteger(): Boolean * * // @return the single integer that this NestedInteger holds, if it holds a single integer * // Return null if this NestedInteger holds a nested list * fun getInteger(): Int? * * // Set this NestedInteger to hold a single integer. * fun setInteger(value: Int): Unit * * // Set this NestedInteger to hold a nested list and adds a nested integer to it. * fun add(ni: NestedInteger): Unit * * // @return the nested list that this NestedInteger holds, if it holds a nested list * // Return null if this NestedInteger holds a single integer * fun getList(): List<NestedInteger>? * } */ class NestedIterator(nestedList: List<NestedInteger>) { val arrayList = ArrayList<NestedInteger>() val numList = ArrayList<Int>() var index = 0 init { add(nestedList) } private fun add(nestedList: List<NestedInteger>){ for (item in nestedList) { if (item.getInteger()!=null) { numList.add(item.getInteger()) } else { //Return null if this NestedInteger holds a nested list add(item.getList()) } } } fun next(): Int { return numList.get(index++) } fun hasNext(): Boolean { return index < numList.size } } /** * Your NestedIterator object will be instantiated and called as such: * var obj = NestedIterator(nestedList) * var param_1 = obj.next() * var param_2 = obj.hasNext() */
标签:
leetcode
, Data Structures
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2019-06-26 android studio 安装APP时出现错误:xxx/build/intermediates/split-apk/armv7/debug/slices/slice_x.apk 的解决方式