Zigzag Iterator
来源:互联网 发布:批量word转pdf windows 编辑:程序博客网 时间:2024/06/05 15:04
Given two 1d vectors, implement an iterator to return their elements alternately.
Example
另外解法
Given two 1d vectors:
v1 = [1, 2]v2 = [3, 4, 5, 6]
By calling next repeatedly until hasNext returns false
, the order of elements returned by next should be: [1, 3, 2, 4, 5, 6]
.
java
并不是最优解,后续会添加
public class ZigzagIterator { /* * @param v1: A 1d vector * @param v2: A 1d vector */ Queue<Integer> queue; public ZigzagIterator(List<Integer> v1, List<Integer> v2) { // do intialization if necessary queue = new LinkedList<Integer>(); for (int i = 0; i < Math.min(v1.size(), v2.size()); i++) { queue.offer(v1.get(i)); queue.offer(v2.get(i)); } if (v1.size() > v2.size()) { for (int i = v2.size(); i < v1.size(); i++) { queue.offer(v1.get(i)); } } else { for (int i = v1.size(); i < v2.size(); i++) { queue.offer(v2.get(i)); } } } /* * @return: An integer */ public int next() { // write your code here return queue.poll(); } /* * @return: True if has next */ public boolean hasNext() { // write your code here return !queue.isEmpty(); }}/** * Your ZigzagIterator object will be instantiated and called as such: * ZigzagIterator solution = new ZigzagIterator(v1, v2); * while (solution.hasNext()) result.add(solution.next()); * Output result */
另外解法
public class ZigzagIterator { /* * @param v1: A 1d vector * @param v2: A 1d vector */ Iterator<Integer> it1; Iterator<Integer> it2; int count = 0; public ZigzagIterator(List<Integer> v1, List<Integer> v2) { // do intialization if necessary it1 = v1.iterator(); it2 = v2.iterator(); count = 0; } /* * @return: An integer */ public int next() { // write your code here int val = 0; if (count % 2 == 0 && it1.hasNext() && it2.hasNext()) { val = it1.next(); } else if (count % 2 != 0 && it2.hasNext() && it1.hasNext()) { val = it2.next(); } else { return it1.hasNext() ? it1.next() : it2.next(); } count++; return val; } /* * @return: True if has next */ public boolean hasNext() { // write your code here return it1.hasNext() || it2.hasNext(); }}/** * Your ZigzagIterator object will be instantiated and called as such: * ZigzagIterator solution = new ZigzagIterator(v1, v2); * while (solution.hasNext()) result.add(solution.next()); * Output result */
阅读全文
0 0
- Zigzag Iterator
- Zigzag Iterator
- Zigzag Iterator
- Zigzag Iterator
- Leetcode: Zigzag Iterator
- leetcode 281: Zigzag Iterator
- *LeetCode-Zigzag Iterator
- [LeetCode281]Zigzag Iterator
- [leetcode281]Zigzag Iterator
- LeetCode 281. Zigzag Iterator
- Leetcode Zigzag Iterator
- #540 Zigzag Iterator
- #541 Zigzag Iterator II
- LeetCode 271. Zigzag Iterator
- 281. Zigzag Iterator
- Zigzag Iterator ii
- Zigzag Iterator ii
- LeetCode 题解(272) : Zigzag Iterator
- SPARK编译的一些记录
- 蒙特卡洛树搜索(MCTS)
- 浓墨重彩之MySQL-10-索引
- n个数中奇数和,偶数和
- 软件安装及yum源配置
- Zigzag Iterator
- hadoop 搭建之环境变量设置(/etc/bashrc)【问题】
- 从零开始的深度学习
- Android笔记
- 数据结构上机实践第八周项目9-广义表算法库及应用
- 浓墨重彩之MySQL-13-触发器
- 动态规划A
- Spark动态分配资源
- Spark DataFrme操作Hive