zoukankan      html  css  js  c++  java
  • 281. Zigzag Iterator (solution 1)

    package LeetCode_281
    
    import java.util.*
    
    /**
     * 281. Zigzag Iterator
     * (Prime)
     * Given two 1d vectors, implement an iterator to return their elements alternately.
    Example:
    Input:
    v1 = [1,2]
    v2 = [3,4,5,6]
    Output: [1,3,2,4,5,6]
    Explanation: By calling next repeatedly until hasNext returns false,
    the order of elements returned by next should be: [1,3,2,4,5,6].
    
    Follow up: What if you are given k 1d vectors? How well can your code be extended to such cases?
    
    Clarification for the follow up question:
    The "Zigzag" order is not clearly defined and is ambiguous for k > 2 cases.
    If "Zigzag" does not look right to you, replace "Zigzag" with "Cyclic".
    For example:
    Input:
    [1,2,3]
    [4,5,6,7]
    [8,9]
    Output: [1,4,8,2,5,9,3,6,7].
     * */
    /*
    * solution 1: merge two array, Time complexity:O(n1+n2), Space complexity:O(n1+n2)
    * */
    class ZigzagIterator(v1: List<Int>?, v2: List<Int>?) {
    
        val list = ArrayList<Int>()
        var index = 0
    
        init {
            val n1 = v1?.size ?: 0
            val n2 = v2?.size ?: 0
            val n = Math.max(n1, n2)
            for (i in 0 until n) {
                if (i < n1 && v1 != null) {
                    list.add(v1[i])
                }
                if (i < n2 && v2 != null) {
                    list.add(v2[i])
                }
            }
        }
    
        fun next(): Int {
            return list.get(index++)
        }
    
        fun hasNext(): Boolean {
            return index < list.size
        }
    }
  • 相关阅读:
    文件操作
    数据补充
    小数据池
    列表
    基础知识1
    我的Python之旅开始
    正则
    模块
    迭代器与生成器
    文件操作
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13693955.html
Copyright © 2011-2022 走看看