forked from anishLearnsToCode/leetcode-algorithms
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PeekingIterator.java
37 lines (31 loc) · 956 Bytes
/
PeekingIterator.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// https://leetcode.com/problems/peeking-iterator
// T: O(N)
// S: O(N)
import java.util.Iterator;
public class PeekingIterator implements Iterator<Integer> {
final private Iterator<Integer> iterator;
int next;
boolean hasNext;
public PeekingIterator(Iterator<Integer> iterator) {
this.iterator = iterator;
hasNext = iterator.hasNext();
next = iterator.hasNext() ? iterator.next() : 0;
}
// Returns the next element in the iteration without advancing the iterator.
public Integer peek() {
return next;
}
// hasNext() and next() should behave the same as in the Iterator interface.
// Override them if needed.
@Override
public Integer next() {
int result = next;
hasNext = iterator.hasNext();
next = iterator.hasNext() ? iterator.next() : 0;
return result;
}
@Override
public boolean hasNext() {
return hasNext;
}
}