zoukankan      html  css  js  c++  java
  • Zigzag Iterator 解答

    Question

    Given two 1d vectors, implement an iterator to return their elements alternately.

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

    Follow up: What if you are given k 1d vectors? How well can your code be extended to such cases?

    Solution

    This solution is suitable for k vectors.

     1 public class ZigzagIterator {
     2     private List<Iterator> list;
     3 
     4     public ZigzagIterator(List<Integer> v1, List<Integer> v2) {
     5         list = new ArrayList<Iterator>();
     6         if (v1.iterator().hasNext())
     7             list.add(v1.iterator());
     8         if (v2.iterator().hasNext())
     9             list.add(v2.iterator());
    10     }
    11 
    12     public int next() {
    13         Iterator<Integer> current = list.remove(0);
    14         int result = current.next();
    15         if(current.hasNext())
    16             list.add(current);
    17         return result;        
    18     }
    19 
    20     public boolean hasNext() {
    21         return list.size() > 0 ? true : false;
    22     }
    23 }
    24 
    25 /**
    26  * Your ZigzagIterator object will be instantiated and called as such:
    27  * ZigzagIterator i = new ZigzagIterator(v1, v2);
    28  * while (i.hasNext()) v[f()] = i.next();
    29  */
  • 相关阅读:
    如何让Jboss的debug在myeclise上运行
    ./configure --prefix /?/? 解释
    解决locate无法使用的问题
    ifconfig command not found
    安装tomcat
    通过wget下载tomcat
    通过rpm安装jdk
    通过wget下载jdk
    oracle 创建表空间
    在ASP中使用VFP编写脚本程序
  • 原文地址:https://www.cnblogs.com/ireneyanglan/p/4899767.html
Copyright © 2011-2022 走看看