immiao0319

Implement an iterator to flatten a 2d vector.

Example:

Input: 2d vector =
[
  [1,2],
  [3],
  [4,5,6]
]
Output: [1,2,3,4,5,6]
Explanation: By calling next repeatedly until hasNext returns false, 
             the order of elements returned by next should be: [1,2,3,4,5,6].

思路:一大一小两个Iterator,小的是大的下一个循环

具体看注释

class Vector2D {
    //大的
    private Iterator<List<Integer>> i;
    //小的
    private Iterator<Integer> j;

    public Vector2D(List<List<Integer>> vec2d) {
        //大的
        i = vec2d.iterator();
    }

    public int next() {
        hasNext();
        //返回小的的下一个
        return j.next();
    }

    public boolean hasNext() {
        //i j 都有下一个元素,并且小的已空的时候
        while ((j == null || !j.hasNext()) && i.hasNext())
            //小的是大的下一个循环
            j = i.next().iterator();
        //返回小的是否有一下一个元素就行了
        return j != null && j.hasNext();
    }
}
View Code

 



分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-12-14
  • 2022-12-23
  • 2021-06-24
  • 2021-12-03
  • 2022-12-23
  • 2022-03-03
  • 2021-06-23
猜你喜欢
  • 2021-11-14
  • 2021-09-07
  • 2021-09-07
  • 2022-12-23
  • 2022-12-23
  • 2021-06-29
相关资源
相似解决方案