diff --git a/leetcode3/284. Peeking Iterator.py b/leetcode3/284. Peeking Iterator.py new file mode 100644 index 00000000..e4314bcc --- /dev/null +++ b/leetcode3/284. Peeking Iterator.py @@ -0,0 +1,51 @@ +# Below is the interface for Iterator, which is already defined for you. +# +# class Iterator: +# def __init__(self, nums): +# """ +# Initializes an iterator object to the beginning of a list. +# :type nums: List[int] +# """ +# +# def hasNext(self): +# """ +# Returns true if the iteration has more elements. +# :rtype: bool +# """ +# +# def next(self): +# """ +# Returns the next element in the iteration. +# :rtype: int +# """ + +class PeekingIterator: + def __init__(self, iterator): + self.iterator = iterator + self.curr = self.iterator.next() + + + def peek(self): + return self.curr + + + def next(self): + ans = self.curr + + if self.iterator.hasNext(): + self.curr = self.iterator.next() + else: + self.curr = None + + return ans + + + def hasNext(self): + return self.curr is not None + + +# Your PeekingIterator object will be instantiated and called as such: +# iter = PeekingIterator(Iterator(nums)) +# while iter.hasNext(): +# val = iter.peek() # Get the next element but not advance the iterator. +# iter.next() # Should return the same value as [val].