zoukankan      html  css  js  c++  java
  • Leetcode 284.顶端迭代器

    顶端迭代器

    给定一个迭代器类的接口,接口包含两个方法: next() 和 hasNext()。设计并实现一个支持 peek() 操作的顶端迭代器 -- 其本质就是把原本应由 next() 方法返回的元素 peek() 出来。

    示例:

    假设迭代器被初始化为列表 [1,2,3]

    调用 next() 返回 1,得到列表中的第一个元素。

    现在调用 peek() 返回 2,下一个元素。在此之后调用 next() 仍然返回 2

    最后一次调用 next() 返回 3,末尾元素。在此之后调用 hasNext() 应该返回 false

    进阶:你将如何拓展你的设计?使之变得通用化,从而适应所有的类型,而不只是整数型?

    [思路]

    设一个 peeked 的flag 同时 保存 peeked 过得值.  如果已经peeked过了, next()直接返回保存的值即可.

     1 // Java Iterator interface reference:
     2 // https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html
     3 class PeekingIterator implements Iterator<Integer> {
     4     Iterator<Integer> itr;
     5     boolean peeked;
     6     int peekVal;
     7 
     8     public PeekingIterator(Iterator<Integer> iterator) {
     9         // initialize any member here.
    10         this.itr = iterator;
    11     }
    12 
    13     // Returns the next element in the iteration without advancing the iterator.
    14     public Integer peek() {
    15         if(peeked) {
    16             return peekVal;
    17         } else {
    18             peeked = true;
    19             peekVal = itr.next();
    20         }
    21         return peekVal;
    22     }
    23 
    24     // hasNext() and next() should behave the same as in the Iterator interface.
    25     // Override them if needed.
    26     @Override
    27     public Integer next() {
    28         if(peeked) {
    29             peeked = false;
    30             return peekVal;
    31         } else return itr.next();
    32     }
    33 
    34     @Override
    35     public boolean hasNext() {
    36         return peeked || itr.hasNext();
    37     }
    38 }
  • 相关阅读:
    mysql数据库(1)
    通过全局异常处理机制实现接口参数校验返回指定返回类型
    http接口安全校验
    java 锁机制介绍
    通过反射获取类的所有属性值拼接成字符串工具类
    Mybatis中出现java.sql.SQLException: 无效的列类型: 1111
    判断两个Long相等
    jwt工具类
    mybatis #{}和${}的区别是什么
    报错解决NoSuchMethod。。。
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10204985.html
Copyright © 2011-2022 走看看