251. Flatten 2D Vector

251. Flatten 2D Vector

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


public class Vector2D implements Iterator<Integer> {
    List<Integer> list = new ArrayList<>();
    int curr = 0; // index of next integer
    public Vector2D(List<List<Integer>> vec2d) {
        for (List<Integer> vec : vec2d) {
            for (int i = 0; i < vec.size(); i++) {
                list.add(vec.get(i));
            }
        }
    }

    @Override
    public Integer next() {
        return list.get(curr++);
    }

    @Override
    public boolean hasNext() {
        return curr<list.size();
    }
    
    public void remove() {
        list.remove(curr-1);
    }
}

 

posted on 2018-11-06 08:15  猪猪&#128055;  阅读(67)  评论(0)    收藏  举报

导航