Peeking Iterator Solutions in C++
Number 284
Difficulty Medium
Acceptance 45.8%
Link LeetCode
Other languages —
Solutions
C++ solution by haoel/leetcode
// Source : https://leetcode.com/problems/peeking-iterator/// Author : Hao Chen// Date : 2015-11-10// Below is the interface for Iterator, which is already defined for you.// **DO NOT** modify the interface for Iterator.class Iterator {struct Data;Data* data;public:Iterator(const vector<int>& nums);Iterator(const Iterator& iter);virtual ~Iterator();// Returns the next element in the iteration.int next();// Returns true if the iteration has more elements.bool hasNext() const;};class PeekingIterator : public Iterator {private:bool m_hasNext;int m_next;void takeNext() {m_hasNext = Iterator::hasNext();if (m_hasNext) {m_next = Iterator::next();}}public:PeekingIterator(const vector<int>& nums) : Iterator(nums) {// Initialize any member here.// **DO NOT** save a copy of nums and manipulate it directly.// You should only use the Iterator interface methods.takeNext();}// Returns the next element in the iteration without advancing the iterator.int peek() {return m_next;}// hasNext() and next() should behave the same as in the Iterator interface.// Override them if needed.int next() {int temp = m_next;takeNext();return temp;}bool hasNext() const {return m_hasNext;}};