Problem statement

https://binarysearch.com/problems/Peekable-Iterator/

Solution

Similar to Leetcode 0284. Peeking Iterator, but here what is given is list, not iterator.

Complexity

Time is O(n) for init and O(1) for other operations, space is O(n).

Code

class PeekableIterator:
    def __init__(self, nums):
        self.nums = nums
        self.p = 0
        
    def peek(self):
        return self.nums[self.p]
        
    def next(self):
        self.p += 1
        return self.nums[self.p - 1]
        
    def hasnext(self):
        return self.p < len(self.nums)