博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
281. Zigzag Iterator - Medium
阅读量:6837 次
发布时间:2019-06-26

本文共 1542 字,大约阅读时间需要 5 分钟。

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].

 

用一个queue来存每个list的iterator。call next()时,从q中poll出先进queue的iterator,返回其next值,如果它没到末尾,还要把它存回queue以备下次使用。call hasNext()就是判断queue是否为空。

时间:O(N),空间:O(1)

public class ZigzagIterator {    Queue
q; public ZigzagIterator(List
v1, List
v2) { q = new LinkedList<>(); if(!v1.isEmpty()) q.offer(v1.iterator()); if(!v2.isEmpty()) q.offer(v2.iterator()); } public int next() { Iterator iter = q.poll(); int val = (int)iter.next(); if(iter.hasNext()) q.offer(iter); return val; } public boolean hasNext() { return !q.isEmpty(); }}/** * Your ZigzagIterator object will be instantiated and called as such: * ZigzagIterator i = new ZigzagIterator(v1, v2); * while (i.hasNext()) v[f()] = i.next(); */

 

转载于:https://www.cnblogs.com/fatttcat/p/10037506.html

你可能感兴趣的文章
VC++ 把窗口带到最前
查看>>
Bilateral Filtering(双边滤波) for SSAO(转)
查看>>
HTTP请求中的缓存(cache)机制
查看>>
Ubuntu 修改时区和时间
查看>>
使用 trait 时报PHP Parse error: syntax error, unexpected 'use' (T_USE) 这个错误
查看>>
JAVA面试准备
查看>>
很近没读书了,读书笔记之<<大道至简>>
查看>>
#define 的换行问题
查看>>
Java多线程-synchronized关键字
查看>>
Dottrace 10.0.2 使用心得
查看>>
微信小程序开发踩坑日记
查看>>
原生Ajax总结
查看>>
机器学习面试题
查看>>
通知与消息机制
查看>>
新的ipad,用xcode编译报错 dyld_shared_cache_extract_dylibs
查看>>
java 中的 viewUtils框架
查看>>
JS-匀速运动-运动停止
查看>>
PHP全栈开发(八):CSS Ⅸ dispaly & visibility
查看>>
HDU-2732 Leapin' Lizards 最大流
查看>>
详解Jedis连接池报错处理
查看>>