Skip to content

Commit ddbc301

Browse files
committed
284. Peeking Iterator
1 parent 561b3d9 commit ddbc301

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
3+
1. 아이디어 : Iterator 구현체 메소드를 활용하여, peek()메소드 구현
4+
공식 ref를 참고, peekVal 변수를 추가하고 미리 생성자 호출에서 next()를 진행해 다음값을 저장
5+
이때 포인터까지 이동했으므로, next(), hasNext()모두 한 칸 앞선 포인터 기준으로 오버라이딩
6+
7+
2. 시간복잡도 : O(N)
8+
9+
3. 자료구조/알고리즘 : 구현
10+
11+
*/
12+
13+
// Java Iterator interface reference:
14+
// https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html
15+
16+
class PeekingIterator implements Iterator<Integer> {
17+
private Iterator<Integer> iter;
18+
private int peekVal;
19+
20+
public PeekingIterator(Iterator<Integer> iterator) {
21+
this.iter = iterator;
22+
peekVal = iter.next();
23+
}
24+
25+
public Integer peek() {
26+
return peekVal;
27+
}
28+
29+
@Override
30+
public Integer next() {
31+
int val = peekVal;
32+
if(iter.hasNext()) peekVal = iter.next();
33+
else peekVal = -1;
34+
35+
return val;
36+
}
37+
38+
@Override
39+
public boolean hasNext() {
40+
if(peekVal == -1) return false;
41+
return true;
42+
}
43+
}

0 commit comments

Comments
 (0)