Leetcode 251 Flatten 2D Vector

xiaoxiao2021-02-28  161

Implement an iterator to flatten a 2d vector.

For example, Given 2d vector =

[ [1,2], [3], [4,5,6] ]

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

利用List的iterator!!!不过要注意null

public class Vector2D implements Iterator<Integer> { private Iterator<List<Integer>> list; private Iterator<Integer> element; public Vector2D(List<List<Integer>> vec2d) { if(vec2d != null && vec2d.size() > 0){ list = vec2d.iterator(); } //element = list.iterator(); } @Override public Integer next() { hasNext(); return element.next(); } @Override public boolean hasNext() { if(list != null){ while((element == null)||(!element.hasNext() && list.hasNext())){ element = list.next().iterator(); } } return element != null && element.hasNext(); } } /** * Your Vector2D object will be instantiated and called as such: * Vector2D i = new Vector2D(vec2d); * while (i.hasNext()) v[f()] = i.next(); */

转载请注明原文地址: https://www.6miu.com/read-17865.html

最新回复(0)