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()
     */
  • 相关阅读:
    JDBC中大数据量的分页解决方法?
    JDBC中的Statement 和PreparedStatement的区别?
    JDBC操作数据库的步骤 ?
    存储过程和函数的区别?
    什么是MVC模式?   
    流行的框架部分?
    请描述一下Struts2的值栈结构,以及它是如何工作的?
    下载文件?
    Struts2的功能扩展点有哪些?
    请说说Struts1和Struts2的区别?
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13193568.html
Copyright © 2011-2022 走看看