zoukankan      html  css  js  c++  java
  • 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()
     */
  • 相关阅读:
    表单提交与后台PHP如何接口?
    json数组转普通数组 普通数组转json数组
    使用Memcache缓存mysql数据库操作的原理和缓存过程浅析
    int(3)和int(10)的区别
    CI 3.0.6 控制器打印base_url 地址不为 localhost的解决方法
    CI3.0控制器下面建文件夹 访问一直404 的解决方法
    http响应需要记住的状态码
    laravel 表单验证 正则匹配
    laravel 加中间件的方法 防止直接打开后台
    Laravel 设置时区
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13193568.html
Copyright © 2011-2022 走看看