前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法练习(17) - 锯齿迭代器

算法练习(17) - 锯齿迭代器

作者头像
惊羽-布壳儿
发布2022-06-15 16:09:27
3810
发布2022-06-15 16:09:27
举报
文章被收录于专栏:惊羽-布壳儿

题目

给出n个一维的向量,请你实现一个迭代器,交替返回它们中间的元素。

示例:

输入: v1 = [1,2] v2 = [3,4,5,6] 输出: [1,3,2,4,5,6]

题解

代码语言:javascript
复制
import java.util.Iterator;
import java.util.LinkedList;

public class UpDownIterator implements Iterator {

    LinkedList<Integer> queue = new LinkedList<>();

    public UpDownIterator(int[]  ... arrs) {

        // 计算最大的数组长度
        int maxLength = 0;
        for (int j = 0; j< arrs.length; j++) {
            maxLength = Math.max(arrs[j].length,maxLength);
        }
        // 使用最大的数组长度作为边界,竖着开始遍历二维数组
        for (int i = 0; i < maxLength; i++) {
            for (int j = 0; j< arrs.length; j++) {
                // i 在小于 一维数组的长度情况下,将该坐标的值放进队列中
                if( i < arrs[j].length){
                    queue.offer(arrs[j][i]);
                }
            }
        }
    }

    public static void main(String[] args) {

        int[] v1 = { 1,2};
        int[] v2 = { 3,4,0};
        int[] v3 = { 5,6};

        UpDownIterator upDownIterator = new UpDownIterator(v1,v2,v3);
        while(upDownIterator.hasNext()){
            System.out.println(upDownIterator.next());
        }
    }

    @Override
    public boolean hasNext() {
        return !queue.isEmpty();
    }

    @Override
    public Object next() {
        return queue.pop();
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 题解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档