C++ solution AC


  • 0
    F
    // 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 {
        bool has_called_peek = false;
        bool has_next = true;
        int val;
    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.
    	    
    	}
    
        // Returns the next element in the iteration without advancing the iterator.
    	int peek() {
    	    if (has_called_peek)
    	    {
    	        return val;
    	    }
    	    has_next = Iterator::hasNext();
    	    has_called_peek = true;
    	    val = Iterator::next();
            return val;
    	}
    
    	// hasNext() and next() should behave the same as in the Iterator interface.
    	// Override them if needed.
    	int next() {
    	    if (has_called_peek)
    	    {
    	        has_called_peek = false;
    	        return val;
    	    }
    	    return Iterator::next();
    	}
    
    	bool hasNext() const {
    	    if (has_called_peek)
    	    {
    	        return has_next;
    	    }
    	    return Iterator::hasNext();
    	   
    	}
    };

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.