Google – Non Null Iterator
Input一个包含Null的iterator,wrap成一个Non-Null Iterator
[Solution]
Maintain a 'top' instance variable.
hasNext()的时候如果top不为null, 返回true。否则找到下一个不为null的为止,如果没有下一个了就返回false。
next()的时候直接返回top。但是这里要注意重置top为null,以便下一个hasNext()。
上面方法只要O(n)time和O(1)space。当然还有一种O(n) space的解法,把所有non-null element都存到一个list里面。
Read full article from Google – Non Null Iterator
Input一个包含Null的iterator,wrap成一个Non-Null Iterator
[Solution]
Maintain a 'top' instance variable.
hasNext()的时候如果top不为null, 返回true。否则找到下一个不为null的为止,如果没有下一个了就返回false。
next()的时候直接返回top。但是这里要注意重置top为null,以便下一个hasNext()。
上面方法只要O(n)time和O(1)space。当然还有一种O(n) space的解法,把所有non-null element都存到一个list里面。
class Solution <T> implements Iterator<T> { Iterator<T> it; T top; public Solution(Iterator<T> it) { this.it = it; } @Override public T next() { T result = top; top = null; return result; } @Override public boolean hasNext() { if (top != null) { return true; } T curr = null; while (it.hasNext() && curr == null) { curr = it.next(); } top = curr; return top != null; }}