zoukankan      html  css  js  c++  java
  • 281. Zigzag Iterator z字型遍历

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

    思路:

    去哪个里面找hasNext()呢?要用一个新的数据结构吧?好像也用不上stack啊
    .iterator()这个接口本来就可以直接用

    两边其实都可以找next()啊,所以就不知道究竟应该找哪边的。直接i j整个iterator互换就行了

    public class ZigzagIterator {
        Iterator<Integer> i;
        Iterator<Integer> j;
    
        public ZigzagIterator(List<Integer> v1, List<Integer> v2) {
            i = v1.iterator();
            j = v2.iterator();
        }
    
        public int next() {
            if (i.hasNext()) {
                Iterator<Integer> temp = i;
                i = j;
                j = temp;
            }
    
            return j.next();
        }
    
        public boolean hasNext() {
            return (i.hasNext() || j.hasNext());
        }
    }
    
    /**
     * Your ZigzagIterator object will be instantiated and called as such:
     * ZigzagIterator i = new ZigzagIterator(v1, v2);
     * while (i.hasNext()) v[f()] = i.next();
     */
    View Code
     
  • 相关阅读:
    String类的操作方法
    操作日期时间类 Calendar类
    JAVA中Date类的使用
    集合方法整理
    JAVA日期——java.util.date类的操作
    关于Collections的操作方法
    java中集合
    java中继承的关系
    java
    封装继承多态-java面向对象三大特征
  • 原文地址:https://www.cnblogs.com/immiao0319/p/13664251.html
Copyright © 2011-2022 走看看