码蹄集 - MT2140 - 双端队列
传送门
- 双端队列
- 题目描述
- 输入描述
- 数据范围
- 输出描述
- 样例一
- 输入
- 输出
- 题目分析
- AC代码
双端队列
- 双端队列 .
时间限制:1秒
空间限制:128M
题目描述
小码哥想创建一个双端队列,即,两头都能进,两头都能访问,两头都能出。请你创建一个这样的双端队列并帮他实现以下三种操作:
- 1 x //将整数x增加到头部
- 2 x //将整数x增加到尾部
- 3 //访问头部的元素
- 4 //访问尾部的元素
- 5 //弹出(删除)头部的元素
- 6 //弹出(删除)尾部的元素
这个双端数列一开始是空的。
输入描述
第一行输入一个整数n,表示操作个数。
接下来n行,每行输入一个操作,格式如题目描述中所示。
数据范围
保证:对于100%的数据:1<=n<=1,000,000,x在int类型范围内,数列为空时只进行操作1和2。
输出描述
对于每个操作3和4,输出一行一个整数表示答案。
样例一
输入
11
1 3
1 6
2 9
3
4
5
2 7
2 8
6
3
4
输出
6
9
3
7
题目分析
本片题解提供一种使用C++ list 模拟双端队列的方法
list可以很方便地进行头部和尾部的插入删除取值操作,正好是题目要求进行的6种操作。
- 插入头部:push_front
- 插入尾部:push_back
- 访问头部:*.first
- 访问尾部:back
- 删除头部:pop_front
- 删除尾部:pop_back
因此直接进行模拟即可。
AC代码
/** @Author: LetMeFly* @Date: 2022-09-28 20:33:04* @LastEditors: LetMeFly* @LastEditTime: 2022-09-28 20:35:15*/
#include <bits/stdc++.h>
using namespace std;
#define mem(a) memset(a, 0, sizeof(a))
#define dbg(x) cout << #x << " = " << x << endl
#define fi(i, l, r) for (int i = l; i < r; i++)
#define cd(a) scanf("%d", &a)
typedef long long ll;
int main() {int N;cin >> N;list<int> li;while (N--) {int op;cin >> op;if (op == 1) {int x;cin >> x;li.push_front(x);}else if (op == 2) {int x;cin >> x;li.push_back(x);}else if (op == 3) {cout << *li.begin() << endl;}else if (op == 4) {cout << li.back() << endl;}else if (op == 5) {li.pop_front();}else {li.pop_back();}}return 0;
}
虽然代码可以复制,但最好还是自己理解后再敲哦
原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/127097523
码蹄集 - MT2140 - 双端队列相关推荐
- STL源码剖析 stack 栈 概述->(使用deque双端队列 / list链表)作为stack的底层容器
Stack是一种先进后出的数据结构,他只有一个出口 stack允许 新增元素.移除元素.取得最顶端的元素,但是无法获得stack的内部数据,因此satck没有遍历行为 Stack定义的完整列表 (双端 ...
- 【Python养成】:案例(设计三维向量类、实现向量的加法、减法以及向量与标量的乘法和除法运算、编写自定义类,模拟内置集、编写自定义类,模拟双端队列。)
学习内容:设计三维向量类.实现向量的加法.减法以及向量与标量的乘法和除法运算 设计三维向量类.实现向量的加法.减法以及向量与标量的乘法和除法运算 实验代码: class Vector_3D:def _ ...
- STL源码剖析 deque双端队列 概述
vector是单向开口的连续线性空间,deque是一种双向开口的连续线性空间. deque可以在头尾两端分别进行元素的插入和删除操作 vector和deque的差异 1,deque允许常数时间内对于头 ...
- C++数据结构和算法2 栈 双端/队列 冒泡选择插入归并快排 二三分查找 二叉树 二叉搜索树 贪婪 分治 动态规划
C++数据结构和算法2 栈 双端/队列 冒泡选择插入归并快排 二三分查找 二叉树 二叉搜索树 贪婪 分治 动态规划 博文末尾支持二维码赞赏哦 _ github 章3 Stack栈 和 队列Queue= ...
- python 判断div 之间的内容是否为空_python实现数据结构与算法之双端队列实现
简介 双端队列(deque, double-ended queue),是一种具有队列和栈的性质的数据结构.双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行.双端队列可以在队列任意一端 ...
- 《恋上数据结构第1季》队列、双端队列、循环队列、循环双端队列
队列(Queue) 队列 Queue 队列的接口设计 队列源码 双端队列 Deque 双端队列接口设计 双端队列源码 循环队列 Circle Queue 循环队列实现 索引映射封装 循环队列 – %运 ...
- ArrayDeque(双端队列的线性实现)详解
ArrayDeque 是 java 中对双端队列的线性实现 一. 特性 无容量大小限制,容量按需增长: 非线程安全队列,无同步策略,不支持多线程安全访问: 当用作栈时,性能优于Stack,当用于队列时 ...
- Java 集合深入理解(10):Deque 双端队列
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 什么是 Deque Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样,蛋 ...
- 算法竞赛入门【码蹄集进阶塔335题】(MT2051-2075)
算法竞赛入门[码蹄集进阶塔335题](MT2051-2075) 文章目录 算法竞赛入门[码蹄集进阶塔335题](MT2051-2075) 前言 为什么突然想学算法了? 为什么选择码蹄集作为刷题软件? ...
最新文章
- python类的__slots__属性、__del__属性、上下文(__enter__和__exit__)、
- java经典模式:七种模式样例
- 中国二氧化碳激光器行业现状研究与可行性分析报告2022-2028年版
- JavaScript id_好程序员web前端分享Javascript中函数作为对象
- java笔试之从单向链表中删除指定值的节点
- C语言 素数三种思路求解,C语言求素数
- 15 行 Java 代码实现一个标准输出的进度条,其中的知识点你知道但并不一定会用...
- 怎样卸载deepin系统_双系统卸载deepin的方法是什么_双系统完全卸载deepin的方法图文步骤...
- 2021李宏毅作业hw3 --食物分类。对比出来的80准确率。
- 美国队用计算机计算排球队员,排球理论考试题库
- Muti-Scale Resnet论文初步复现
- 多可系统如何设置登录IP限制
- 塔夫茨计算机科学,塔夫茨大学计算机科学研究生语言及申请要求-费用-课程设置...
- Go语言如何捕获fatal致命错误并输出到日志
- oracle数据linux中的位置,Oracle中执行计划的存储位置
- MyEclipse中maven的下载、配置及安装
- 龙芯的全新自主指令集到底强在何处?
- TIOBE 2021 年度编程语言:Python
- python相关分析和关联分析
- 获取某一个<tr>中<td>的值