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()
     */
  • 相关阅读:
    HDU 2844 Coins(多重背包)
    HDU 4540 威威猫系列故事——打地鼠(DP)
    Codeforces Round #236 (Div. 2)
    FZU 2140 Forever 0.5
    HDU 1171 Big Event in HDU(DP)
    HDU 1160 FatMouse's Speed(DP)
    ZOJ 3490 String Successor
    ZOJ 3609 Modular Inverse
    ZOJ 3603 Draw Something Cheat
    ZOJ 3705 Applications
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13193568.html
Copyright © 2011-2022 走看看