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
        }
    }
  • 相关阅读:
    day06
    day05
    day04
    day03
    day02
    day01
    python-study-42
    OI 知识总览 算法篇 之 图论
    OI 知识总览 算法篇 之 基础算法
    [CSP2019-JX] 散步 解题报告
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13693955.html
Copyright © 2011-2022 走看看