Suppose you have a Iterator class with has_next()
and get_next()
methods.
Please design and implement a ZigzagIterator class as a wrapper of two iterators.
For example, given two iterators:
i0 = [1,2,3,4]
i1 = [5,6]
ZigzagIterator it(i0, i1); while(it.has_next()) { print(it.get_next()); }
The output of the above pseudocode would be [1,5,2,6,3,4]
.
Note: For Java solution we will use JDK's Iterator class, so the methods would be hasNext()
and next()
.
public class ZigzagIterator { Iterator i0, i1; Iterator it; public ZigzagIterator(Iterator i0, Iterator i1) { this.i0 = i0; this.i1 = i1; this.it = i0.hasNext()? i0:i1; } public boolean has_next() { return it.hasNext(); } public int get_next() { int val = (Integer)it.next(); if(it == i0 && i1.hasNext()) it = i1; else if(it == i1 && i0.hasNext()) it = i0; return val; } }
第二种解法,这个方便解有多个Iterator的情况,也就是followup的问题:
class ZigzagIterator { private: vector<Iterator> vec; vector<Iterator>::iterator it; public: ZigzagIterator(Iterator& i0, Iterator& i1) { vec = {i0, i1}; it = vec.begin(); while(!(*it).has_next()) it++; } bool has_next() { return (*it).has_next(); } int get_next() { auto prev = it; int val = (*it).get_next(); do { if(++it == vec.end()) it = vec.begin(); } while(!(*it).has_next() && it != prev); return val; } };
相关推荐
js js_leetcode题解之103-binary-tree-zigzag-level-order-traversal.js
《Boa_ZigZag_Price - MetaTrader 5脚本》是专为金融交易者设计的一款技术分析工具,它基于MetaTrader 5交易平台。这款脚本的核心是ZigZag指标,ZigZag是一种非常实用的技术分析工具,用于识别市场的趋势变化和价格...
js js_leetcode题解之6-zigzag-conversion.js
c语言入门 C语言_leetcode题解之06-zigzag-conversion.c
python python_leetcode题解之103_Binary_Tree_Zigzag_Level_Order_Traversal
c c语言_leetcode 0006_zigzag_conversion.zip
java入门 java_leetcode题解之006_ZigZag_Conversion
c语言入门 c语言_leetcode题解之1372_longest_zigzag_path_in_a_binary_tree
zigzag代码matlab 之字形 基于Matlab的JPEG算法中的Z字形扫描 之字形扫描 量化后,DC 系数与 63 个 AC 系数分开处理。 DC 系数是原始 64 个图像样本的平均值的度量。 由于相邻 8×8 块的 DC 系数之间通常存在很强的...
本文将详细介绍一种名为“ZigzagPoints”的MT4脚本,该脚本旨在帮助交易者量化并分析Zigzag指标的关键点位。 Zigzag指标,又称锯齿形指标,是一种简单但有效的技术分析工具,用于识别市场的主要趋势变化。它通过...
leetcode 2 代码挑战 之字形转换 字符串"PAYPALISHIRING"在给定的行数上以锯齿形图案书写,如下所示:(您可能希望以固定字体显示此图案以获得更好的可读性) P A H N A ...编写将接受一个字符串并在给定行数的情况下...
《基于RSI指标的MetaTrader 5 EA交易详解》 在金融市场的自动化交易领域,MetaTrader 5(MT5)交易平台因其强大的功能和广泛的使用而备受推崇。"Exp_RSI - MetaTrader 5 EA.zip"这个压缩包文件,提供了一个基于相对...
s function method combined with the density functional theory, we investigate the electron and spin transport properties of carbon chains covalently connected with zigzag-edged graphene electrodes at ...
Zigzag编码是一种在图像压缩领域中常用的扫描方法,它主要应用于无损压缩技术,如JPEG-LS和某些变种的JPEG。这种编码方式通过不规则的顺序访问像素来减少相邻像素之间的相关性,从而提高数据的压缩效率。在MATLAB中...
《MetaTrader 5中的ZigZag指标详解》 ZigZag,又称之为“之字转向”或“锯齿形”,是一种在金融市场技术分析中广泛应用的技术指标。它通过连接价格走势中的显著高点和低点,形成一系列的线段,帮助交易者识别市场的...
Zigzag算法是一种在图像处理领域常见的扫描方法,特别是在JPEG压缩和解压缩中起到关键作用。这个算法的主要目的是为了按照特定顺序访问图像的像素,从而有效地进行数据编码和传输。在Python中实现zigzag算法,我们...
本压缩包"Algorithm-interview.zip"聚焦于算法在面试中的应用,旨在帮助求职者提升算法理解和解决问题的能力,以应对技术面试中的挑战。 1. **算法基础**:在面试中,对基础算法的理解是必不可少的。这包括排序算法...
实现Varint + ZigZag的编解码过程,里面有我自己对Vint编解码实现的算法 ,VInt编码为Varint编码和ZigZag编码的结合,为一种将64位二进制编码的有符号整型编码在最多10字节中的编码方式。Varint编码为一种将64位二...
zzf智能交易使用 ZIGZAG-FRACTALS 在小时时间图表中先前柱的 high-low 预测当天趋势2
**简单ZigZag MetaTrader 5脚本**是一个用于外汇交易分析的工具,它基于MetaTrader 5(MT5)平台。ZigZag指标是技术分析中常见的一种工具,其主要目的是在价格波动中识别趋势的"峰"和"谷",从而帮助交易者在复杂的...