• LeetCode 284. Peeking Iterator


    题目

    再维护一个iterator ,用来实现peek

    /*
     * 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;
     *		Iterator(const vector<int>& nums);
     * 		Iterator(const Iterator& iter);
     *
     * 		// Returns the next element in the iteration.
     *		int next();
     *
     *		// Returns true if the iteration has more elements.
     *		bool hasNext() const;
     *	};
     */
    
    class PeekingIterator : public Iterator {
    public:
        Iterator* iter;
        int _next;
    	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.
            iter = new Iterator(nums);
            if(nums.size()!=0)
                _next = nums[0];
            if(iter->hasNext())
                iter->next();
    	    
    	}
    	
        // Returns the next element in the iteration without advancing the iterator.
    	int peek() {
            
            return _next;
            
    	}
    	
    	// hasNext() and next() should behave the same as in the Iterator interface.
    	// Override them if needed.
    	int next() {
            
            if(iter->hasNext())
                 _next = iter->next();
    	    return 	Iterator::next();
    	}
    	
    	bool hasNext() const {
    	    
            return Iterator::hasNext();
    	}
    };
    
  • 相关阅读:
    chrome手动同步书签
    MySQL(5.6/5.7版本)卸载方法
    Windows 搭建IIS+PHP+MySQL环境
    按照innode删除结点
    wsl区分大小win10不区分大小写解决方案
    Docker容器里的centos疑难杂症
    [UGUI]源码调试和修改
    [UnityAPI]EditorWindow类 & Editor类
    [UnityAPI]Selection类
    [Lua]require
  • 原文地址:https://www.cnblogs.com/dacc123/p/12910969.html
Copyright © 2020-2023  润新知