package com.interview.linklist;
import java.util.Iterator;
import java.util.List;
/**
* Date 10/10/2016
* @author Tushar Roy
*
* Implement an iterator to flatten a 2d vector.
*
* https://leetcode.com/problems/flatten-2d-vector/
*
*/
public class Flatten2DList implements Iterator<Integer> {
private List<List<Integer>> vector;
private int currentList = 0;
private int currentPos = 0;
public Flatten2DList(List<List<Integer>> vec2d) {
vector = vec2d;
}
@Override
public Integer next() {
if (!hasNext()) {
throw new IllegalArgumentException();
}
int data = vector.get(currentList).get(currentPos);
currentPos++;
if (currentPos == vector.get(currentList).size()) {
currentPos = 0;
currentList++;
}
return data;
}
@Override
public boolean hasNext() {
while (currentList < vector.size() && vector.get(currentList).size() == 0) {
currentList++;
}
return currentList < vector.size();
}
}