跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Dropbox 面试题:左旋右旋迭代器
未分類
8 3 月 2021

Dropbox 面试题:左旋右旋迭代器

Dropbox 面试题:左旋右旋迭代器

資深大佬 : zzzrf 3

描述

给你两个一维向量,实现一个迭代器,交替返回两个向量的元素

在线评测地址

样例 1

Input: v1 = [1, 2] and 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]. 

样例 2

Input: v1 = [1, 1, 1, 1] and v2 = [3, 4, 5, 6] Output: [1, 3, 1, 4, 1, 5, 1, 6] 

题解

用双指针求解即可,交叉返回两数组当前位置的数,当一个数组被访问完后,就一直访问另一个数组

public class ZigzagIterator {          public Iterator<Integer> it1;     public Iterator<Integer> it2;     public int turns;      /**      * @param v1 v2 two 1d vectors      */     public ZigzagIterator(List<Integer> v1, List<Integer> v2) {         // initialize your data structure here.         this.it1 = v1.iterator();         this.it2 = v2.iterator();         turns = 0;     }      public int next() {         // Write your code here         turns++;         if((turns % 2 == 1 && it1.hasNext()) || (!it2.hasNext())) {             return it1.next();         } else if((turns % 2 == 0 && it2.hasNext()) || (!it1.hasNext())) {             return it2.next();         }         return -1;       }      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)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具