当前位置: 首页 > news >正文

LeetCode第284题 - 窥视迭代器

题目

解答一

package leetcode.editor.cn;
//leetcode submit region begin(Prohibit modification and deletion)
// Java Iterator interface reference:
// https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.htmlimport java.util.Iterator;
import java.util.LinkedList;class PeekingIterator implements Iterator<Integer> {private LinkedList<Integer> values = new LinkedList<>();private Iterator<Integer> valuesIterator = null;private int nextIndex = 0;public PeekingIterator(Iterator<Integer> iterator) {// initialize any member here.while (iterator.hasNext()) {values.addLast(iterator.next());}valuesIterator = values.iterator();}// Returns the next element in the iteration without advancing the iterator.public Integer peek() {return values.get(nextIndex);}// hasNext() and next() should behave the same as in the Iterator interface.// Override them if needed.@Overridepublic Integer next() {++nextIndex;return valuesIterator.next();}@Overridepublic boolean hasNext() {return valuesIterator.hasNext();}
}
//leetcode submit region end(Prohibit modification and deletion)

解答二

package leetcode.editor.cn;
//leetcode submit region begin(Prohibit modification and deletion)
// Java Iterator interface reference:
// https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.htmlimport java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;class PeekingIterator implements Iterator<Integer> {private LinkedList<Integer> values = new LinkedList<>();private ListIterator<Integer> valuesIterator = null;public PeekingIterator(Iterator<Integer> iterator) {// initialize any member here.while (iterator.hasNext()) {values.addLast(iterator.next());}valuesIterator = values.listIterator();}// Returns the next element in the iteration without advancing the iterator.public Integer peek() {Integer value = valuesIterator.next();valuesIterator.previous();return value;}// hasNext() and next() should behave the same as in the Iterator interface.// Override them if needed.@Overridepublic Integer next() {return valuesIterator.next();}@Overridepublic boolean hasNext() {return valuesIterator.hasNext();}
}
//leetcode submit region end(Prohibit modification and deletion)

测试用例

package leetcode.editor.cn;import org.junit.Test;import java.util.List;import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;public class PeekingIteratorTest {private PeekingIterator iter = null;@Testpublic void test1() {iter = new PeekingIterator(List.of(1, 2, 3).iterator());assertTrue(iter.hasNext());assertTrue(String.valueOf(iter.peek()), iter.peek() == 1);assertTrue(iter.next() == 1);assertTrue(iter.hasNext());assertTrue(String.valueOf(iter.peek()), iter.peek() == 2);assertTrue(iter.hasNext());assertTrue(iter.next() == 2);assertTrue(iter.hasNext());assertTrue(String.valueOf(iter.peek()), iter.peek() == 3);assertTrue(iter.next() == 3);assertFalse(iter.hasNext());}
}
http://www.dtcms.com/a/178796.html

相关文章:

  • 1688 开放平台 API 全解析:商品详情实时数据采集接口开发手册
  • 存储器:DDR和独立显卡的GDDR有什么区别?
  • 数据透视表控件DHTMLX Pivot v2.1发布,新增HTML 模板、增强样式等多个功能
  • Pyinstaller编译EXE及反编译
  • 解决方案:ValueError: setting an array element with a sequence.
  • 主成分分析(PCA)是什么?简易理解版
  • web 自动化之 selenium+webdriver 环境搭建及原理讲解
  • 第三天 车联网云架构
  • CAS、CAS自旋、CAS自旋锁、CLH锁与Java AQS:深入理解并发编程核心机制
  • stable diffusion的attention-map:提取和可视化跨注意力图
  • DRAM详解
  • 【Electron】electron-vue 借助 element-ui UI 库助力桌面应用开发
  • MIST:一键解锁 macOS 历史版本,旧系统安装不再难!
  • 学习黑客 MAC 地址深入了解
  • 问题 | 低空经济未来发展前景机遇及挑战
  • C++ 工具链与开发实践:构建安全、高效与创新的开发生态
  • 探索大语言模型(LLM):词袋法(Bag of Words)原理与实现
  • 【愚公系列】《Manus极简入门》026-市场分析专家:“市场洞察家”
  • 【JavaScript】二十九、垃圾回收 + 闭包 + 变量提升
  • Python实例题:Python获取喜马拉雅音频
  • laravel 使用异步队列,context带的上下文造成反序列化出问题
  • day05_java中常见的运算符
  • python学生作业提交管理系统-在线作业提交系统
  • Hutool的`BeanUtil.toBean`方法详解
  • 自定义Widget开发:自定义布局实现
  • Spring Boot Controller 如何处理HTTP请求体
  • 力扣刷题Day 42:缺失的第一个正数(238)
  • javaStream流toMap小坑
  • 算法与数据结构 - 常用图算法总结
  • 视频编解码学习六之视频采集和存储