zoukankan      html  css  js  c++  java
  • 284. Peeking Iterator

    package LeetCode_284
    
    /**
     * 284. Peeking Iterator
     * https://leetcode.com/problems/peeking-iterator/
     * Design an iterator that supports the peek operation on a list in addition to the hasNext and the next operations.
    Implement the PeekingIterator class:
    PeekingIterator(int[] nums): Initializes the object with the given integer array nums.
    int next(): Returns the next element in the array and moves the pointer to the next element.
    bool hasNext(): Returns true if there are still elements in the array.
    int peek(): Returns the next element in the array without moving the pointer.
     * */
    // Kotlin Iterator reference:
    // https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-iterator/
    
    class PeekingIterator(iterator: Iterator<Int>) : Iterator<Int> {
    
        private var isDone = false
        private var it: Iterator<Int>? = null
        private var next: Int = 0
    
        init {
            it = iterator
            if (iterator.hasNext()){
                next = iterator.next()
            } else {
                isDone = true
            }
        }
    
        fun peek(): Int {
            return next
        }
    
        override fun next(): Int {
            //return value and move the pointer
            val result = next
            if (it?.hasNext()!!) {
                next = it?.next()!!
            } else {
                isDone = true
            }
            return result
        }
    
        override fun hasNext(): Boolean {
            return !isDone
        }
    }
    
    /**
     * Your PeekingIterator object will be instantiated and called as such:
     * var obj = PeekingIterator(arr)
     * var param_1 = obj.next()
     * var param_2 = obj.peek()
     * var param_3 = obj.hasNext()
     */

     类似的设计模式:迭代子模式

  • 相关阅读:
    ES6常用语法简介
    webpack核心概念
    前端模块化规范详解
    使用Node.js原生代码实现静态服务器
    Node.js脚手架express与前段通信【socket】
    临门一脚- Node.js
    redis缓存穿透和雪崩
    redis哨兵模式
    redis主从复制
    redis发布订阅
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/15072818.html
Copyright © 2011-2022 走看看