LeetCode 284. 顶端迭代器

1. 题目

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

示例:
假设迭代器被初始化为列表 [1,2,3]。调用 next() 返回 1,得到列表中的第一个元素。
现在调用 peek() 返回 2,下一个元素。在此之后调用 next() 仍然返回 2。
最后一次调用 next() 返回 3,末尾元素。在此之后调用 hasNext() 应该返回 false。进阶:
你将如何拓展你的设计?使之变得通用化,从而适应所有的类型,而不只是整数型?

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/peeking-iterator
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

// Below is the interface for Iterator, which is already defined for you.
// **DO NOT** modify the interface for Iterator.class Iterator {struct Data;Data* data;
public:Iterator(const vector<int>& nums);Iterator(const Iterator& iter);virtual ~Iterator();// Returns the next element in the iteration.int next();// Returns true if the iteration has more elements.bool hasNext() const;
};
//----------------------以上不用提交----------class PeekingIterator : public Iterator {int curVal;bool end;
public:PeekingIterator(const vector<int>& nums) : Iterator(nums) {end = false;if(Iterator::hasNext()){curVal = Iterator::next();}elseend = true;}int peek() {return curVal;}int next() {if(end)return -1;int ans = curVal;if(Iterator::hasNext())curVal = Iterator::next();elseend = true;return ans;}bool hasNext() const {return !end;	    }
};

4 ms 9.9 MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT国内镜像站

ChatGPT介绍 ChatGPT是OpenAI开发的一个大型预训练语言模型。它是GPT-3模型的变体&#xff0c;GPT-3经过训练&#xff0c;可以在对话中生成类似人类的文本响应。ChatGPT 旨在用作聊天机器人&#xff0c;我们可以对其进行微调&#xff0c;以完成各种任务&#xff0c;如回答问题…

【转】DATAGRIDVIEW控制

目录&#xff1a; 取得或者修改当前单元格的内容 设定单元格只读 不显示最下面的新行 判断新增行 行的用户删除操作的自定义 行、列的隐藏和删除 禁止列或者行的Resize ★ DataGridView 取得或者修改当前单元格的内容&#xff1a; GO TO TOP 当前单元格指的是 DataGridView…

matlab 动画_MATLAB绘图动画(1)

今天写一个案列&#xff0c;绘图动画画出以下曲面函数随着theta角的变化的动图程序代码&#xff1a;clc,clear,close allx-8:0.5:8;[X,Y]meshgrid(x);rsqrt(X.^2Y.^2);Zsin(r)./r;figure(color,w);surf(Z); %画出帧theAxes axis; %保存…

LeetCode 2020 力扣杯全国春季编程大赛(1644/4093,前40.2%)

文章目录1. 比赛结果2. 题目解析2.1 拿硬币 Easy2.2 传递信息 Esay2.3 剧情触发时间 Medium2.4 最小跳跃次数 Hard2.5 二叉树任务调度 Hard1. 比赛结果 前两题比较顺利&#xff0c;24分钟做出来了&#xff0c;第3&#xff0c;4两题试了好久&#xff0c;都显示超时&#xff0c;…

silverlight2.0 demo实例,源码下载

这是最近发现的微软官方网站上提供的学习例子&#xff0c;并有源码下载&#xff0c;与大家分享。 http://silverlight.net/Community/gallerydetail.aspx?catsl2 下面这个链接是银光开源中心提供的&#xff0c;也不错哦。。 http://www.slcenter.cn/ YoLing音频播放器v1.0 for…

网页设计框架布局代码_网页设计中的分屏切割布局法

今天和大家聊的是一种关于网页设计中的视觉呈现方法&#xff0c;一般我们称之为“分屏布局”&#xff0c;是一种常见的网页设计排版方式&#xff0c;将页面分割为均等或者不均等的两部分&#xff0c;这种方式的好处就是可以将文字信息和图像元素进行更有效的布局区分&#xff0…

LeetCode 第 24 场双周赛(326/1898,前17.2%)

文章目录1. 比赛结果2. 题目1. LeetCode 5372. 逐步求和得到正数的最小值 easy2. LeetCode 5373. 和为 K 的最少斐波那契数字数目 medium3. LeetCode 5374. 长度为 n 的开心字符串中字典序第 k 小的字符串 medium4. LeetCode 5375. 恢复数组 hard1. 比赛结果 做出来了 1、2、3…

货物与产品的区别_超市货架和仓储式货架有什么区别?

在生活中&#xff0c;超市货架和仓储货架咱们都叫货架&#xff0c;这样导致了很多客户都认为货架不就是超市里面摆货的那个货架吗&#xff1f;其实&#xff0c;虽然两种都叫货架&#xff0c;两者之间都有存储功能&#xff0c;但还有其它的区别。仓库货架注重的是存储量和承重量…

详细解析Java中抽象类和接口的区别

详细解析Java中抽象类和接口的区别 在Java语言中&#xff0c; abstract class 和interface 是支持抽象类定 义的两种机制。正是由于这两种机制的存在&#xff0c;才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性&a…

LeetCode 1417. 重新格式化字符串

1. 题目 给你一个混合了数字和字母的字符串 s&#xff0c;其中的字母均为小写英文字母。 请你将该字符串重新格式化&#xff0c;使得任意两个相邻字符的类型都不同。 也就是说&#xff0c;字母后面应该跟着数字&#xff0c;而数字后面应该跟着字母。 请你返回 重新格式化后 …

[分享]天轰穿VS2005视频教程

谈到学习,虽然有很多很多人有自己一套的自学方法. 但有时候,有个好的老师来教,一个好的拍档一同促进也是十分重要的. 就在一个星期前我偶然在Google上点入了天轰穿的blog 发现里面的VS2005视频教程对于一些新学.net的朋友是在是太有帮助了 从基础到高级应用都能够涉及到,实在是…

svn忽略指定文件夹下的文件_管理SteamLibrary文件夹下的acf文件

管理SteamLibrary文件夹下的acf文件众所周知&#xff0c;steam中下载的游戏会在SteamLibrarysteamappscommon文件夹下创建一个以游戏名称为名的文件夹用来存放文件&#xff0c;并在SteamLibrarysteamapps文件夹下创建一个acf文件&#xff0c;里面储存着游戏的一些信息&#xff…

LeetCode 1418. 点菜展示表(哈希map)

1. 题目 给你一个数组 orders&#xff0c;表示客户在餐厅中完成的订单&#xff0c;确切地说&#xff0c; orders[i][customerNamei,tableNumberi,foodItemi] &#xff0c;其中 customerNamei 是客户的姓名&#xff0c;tableNumberi 是客户所在餐桌的桌号&#xff0c;而 foodIt…

深入分析驴子系列(2)

在 BOOL CemuleApp::InitInstance() 函数 的 672行&#xff08;VERIFY( (m_hTimer ::SetTimer(NULL, NULL, 300, StartupTimer)) ! NULL ); &#xff09; 启动一个定时器 在该定时器的 执行函数&#xff08; void CALLBACK CemuleDlg::StartupTimer(HWND /*hwnd*/, UINT /*uiM…

python现在时间 命令_Python3 - 时间处理与定时任务

1.计算明天和昨天的日期#! /usr/bin/env python#codingutf-8# 获取今天、昨天和明天的日期# 引入datetime模块import datetime#计算今天的时间today datetime.date.today()#计算昨天的时间yesterday today - datetime.timedelta(days 1)#计算明天的时间tomorrow today dat…

LeetCode 1419. 数青蛙(脑洞题)

1. 题目 给你一个字符串 croakOfFrogs&#xff0c;它表示不同青蛙发出的蛙鸣声&#xff08;字符串 “croak” &#xff09;的组合。 由于同一时间可以有多只青蛙呱呱作响&#xff0c;所以 croakOfFrogs 中会混合多个 “croak” 。 请你返回模拟字符串中所有蛙鸣所需不同青蛙的…

MYSQL性能优化(转)

MySQL 服务器调优 最近帮人维护一个DZ论坛&#xff0c;总结如下几个调优技巧&#xff0c;让 MySQL 服务器飞速运行有 3 种方法可以加快 MySQL 服务器的运行速度&#xff0c;效率从低到高依次为&#xff1a;1.替换有问题的硬件。2.对 MySQL 进程的设置进行调优。3.对查询进行优化…

python报IndentationError: unexpected indent的解决方法.

问题描述&#xff1a; python语言对缩进非常敏感&#xff0c;一般都是四个空格 一个tab&#xff0c;但是很多时候我们会忽视这个问题。导致两者混用或者少写空格容易出现这样的问题。问题解决&#xff1a;找到指定代码行&#xff0c;重新书写&#xff01;下面的with open则是明…

termux配置python安装kali_安卓安装kali linux之Termux

解决安装kali无模组问题步骤1.获取root环境需要下载proot直接在命令行里输入pkg install proot&#xff0c;下完以后输入命令termux-chroot获取root环境2.获取git &#xff0c;因为需要在github上下载atilo&#xff0c;atilo的作用是atilo是github上的一个开源工具&#xff0c;…

LeetCode 466. 统计重复个数(循环节)

1. 题目 由 n 个连接的字符串 s 组成字符串 S&#xff0c;记作 S [s,n]。例如&#xff0c;["abc",3]“abcabcabc”。 如果我们可以从 s2 中删除某些字符使其变为 s1&#xff0c;则称字符串 s1 可以从字符串 s2 获得。例如&#xff0c;根据定义&#xff0c;“abc”…