当前位置: 首页 > 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());}
}

相关文章:

  • 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获取喜马拉雅音频
  • 第一集|《刑警的日子》很生活,《执法者们》有班味
  • “上海之帆”巡展在日本大阪开幕,松江区组织企业集体出展
  • 习近平出席俄罗斯总统举行的欢迎仪式
  • 大风暴雨致湖南岳阳县6户房屋倒塌、100多户受损
  • 上交现场配乐4K修复版《神女》:默片巅峰有了新的打开方式
  • 这个五月,有三部纪录电影值得一看