zoukankan      html  css  js  c++  java
  • 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();
    	}
    };
    
  • 相关阅读:
    INSERT
    jQuery选择器
    工厂模式
    快乐的Linux命令行
    Linux常用命令与基本概念
    RAC 集群更换IP
    RMAN-03009 ORA-19504 ORA-27038
    Redhat 6.4_联网 yum 配置
    /dev/sda3: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY
    nginx安装笔记
  • 原文地址:https://www.cnblogs.com/dacc123/p/12910969.html
Copyright © 2011-2022 走看看