Skip to content

Commit dcf5224

Browse files
solve speeking iterator #284 in java
1 parent 63953c1 commit dcf5224

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@
231231
| 280 | 🔒 [Wiggle Sort](https://leetcode.com/problems/wiggle-sort) | | |
232232
| 281 | 🔒 [Zigzag Iterator](https://leetcode.com/problems/zigzag-iterator) | | |
233233
| 283 | [Move Zeroes](https://leetcode.com/problems/move-zeroes) | [![Java](assets/java.png)](src/MoveZeros.java) [![Python](assets/python.png)](python/move_zeroes.py) | |
234-
| 284 | [Peeking Iterator](https://leetcode.com/problems/peeking-iterator) | | |
234+
| 284 | [Peeking Iterator](https://leetcode.com/problems/peeking-iterator) | [![Java](assets/java.png)](src/PeekingIterator.java) | |
235235
| 285 | 🔒 [Inorder Successor in BST](https://leetcode.com/problems/inorder-successor-in-bst) | | |
236236
| 286 | 🔒 [Walls and Gates](https://leetcode.com/problems/walls-and-gates) | | |
237237
| 287 | [Find the Duplicate Number](https://leetcode.com/problems/find-the-duplicate-number) | | |

src/PeekingIterator.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// https://leetcode.com/problems/peeking-iterator
2+
// T: O(N)
3+
// S: O(N)
4+
5+
import java.util.Iterator;
6+
7+
public class PeekingIterator implements Iterator<Integer> {
8+
final private Iterator<Integer> iterator;
9+
int next;
10+
boolean hasNext;
11+
12+
public PeekingIterator(Iterator<Integer> iterator) {
13+
this.iterator = iterator;
14+
hasNext = iterator.hasNext();
15+
next = iterator.hasNext() ? iterator.next() : 0;
16+
}
17+
18+
// Returns the next element in the iteration without advancing the iterator.
19+
public Integer peek() {
20+
return next;
21+
}
22+
23+
// hasNext() and next() should behave the same as in the Iterator interface.
24+
// Override them if needed.
25+
@Override
26+
public Integer next() {
27+
int result = next;
28+
hasNext = iterator.hasNext();
29+
next = iterator.hasNext() ? iterator.next() : 0;
30+
return result;
31+
}
32+
33+
@Override
34+
public boolean hasNext() {
35+
return hasNext;
36+
}
37+
}

0 commit comments

Comments
 (0)