当前位置: 首页 > 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.xdnf.cn/news/339679.html

相关文章:

  • 立式筒仓式发酵槽实验台试验装置
  • Lua从字符串动态构建函数
  • LeetCode 热题 100 238. 除自身以外数组的乘积
  • IC ATE集成电路测试学习——PLL测试(一)
  • Redis-商品缓存
  • pycharm无法导入相对路径下其它文件
  • 性能远超SAM系模型,苏黎世大学等开发通用3D血管分割基础模型
  • 【造包工具】【Xcap】精讲Xcap构造分片包(IPv4、ipv6、4G\5G等pcap均可),图解超赞超详细!!!
  • 开发者如何优雅应对HTTPS抓包难题
  • 智能量化策略开发全流程:数据准备,因子计算,因子分析,模型训练,策略构建(附python代码)
  • 硬件选型:工控机的选择要素
  • 00 Ansible简介和安装
  • ubuntu 22.04 换源
  • 【Linux】FreeRTOS与Linux:实时与通用的终极对比
  • LeetCode热题100--54.螺旋矩阵--中等
  • Hutool的`BeanUtil.toBean`方法详解
  • Navee滑板车强势登陆中国,以智能科技重塑城市出行新风尚
  • 使用 Cesium 构建 3D 地图应用的实践
  • C++ 算法学习之旅:从入门到精通的秘籍
  • AWS之存储服务
  • 蓝桥杯FPGA赛道第二次模拟题代码
  • 如何从播放器构造角度研究 Media3 源码
  • 六、Hadoop初始化与启动
  • KAXA凯莎科技AGV通信方案如何赋能智能仓储高效运作?
  • 数据结构--红黑树
  • XML简单介绍
  • IBM BAW(原BPM升级版)使用教程第五讲
  • MyBatis 动态 SQL 详细指南【完整示例】
  • Python+ffmpeg 实现给视频添加字幕
  • Android ImageView 加载 Base64编码图片