传送门

    • 双端队列
      • 题目描述
      • 输入描述
        • 数据范围
      • 输出描述
      • 样例一
        • 输入
        • 输出
  • 题目分析
  • AC代码

双端队列

  • 双端队列 .

时间限制:1秒
空间限制:128M


题目描述

小码哥想创建一个双端队列,即,两头都能进,两头都能访问,两头都能出。请你创建一个这样的双端队列并帮他实现以下三种操作:

  1. 1 x //将整数x增加到头部
  2. 2 x //将整数x增加到尾部
  3. 3 //访问头部的元素
  4. 4 //访问尾部的元素
  5. 5 //弹出(删除)头部的元素
  6. 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 - 双端队列相关推荐

  1. STL源码剖析 stack 栈 概述->(使用deque双端队列 / list链表)作为stack的底层容器

    Stack是一种先进后出的数据结构,他只有一个出口 stack允许 新增元素.移除元素.取得最顶端的元素,但是无法获得stack的内部数据,因此satck没有遍历行为 Stack定义的完整列表 (双端 ...

  2. 【Python养成】:案例(设计三维向量类、实现向量的加法、减法以及向量与标量的乘法和除法运算、编写自定义类,模拟内置集、编写自定义类,模拟双端队列。)

    学习内容:设计三维向量类.实现向量的加法.减法以及向量与标量的乘法和除法运算 设计三维向量类.实现向量的加法.减法以及向量与标量的乘法和除法运算 实验代码: class Vector_3D:def _ ...

  3. STL源码剖析 deque双端队列 概述

    vector是单向开口的连续线性空间,deque是一种双向开口的连续线性空间. deque可以在头尾两端分别进行元素的插入和删除操作 vector和deque的差异 1,deque允许常数时间内对于头 ...

  4. C++数据结构和算法2 栈 双端/队列 冒泡选择插入归并快排 二三分查找 二叉树 二叉搜索树 贪婪 分治 动态规划

    C++数据结构和算法2 栈 双端/队列 冒泡选择插入归并快排 二三分查找 二叉树 二叉搜索树 贪婪 分治 动态规划 博文末尾支持二维码赞赏哦 _ github 章3 Stack栈 和 队列Queue= ...

  5. python 判断div 之间的内容是否为空_python实现数据结构与算法之双端队列实现

    简介 双端队列(deque, double-ended queue),是一种具有队列和栈的性质的数据结构.双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行.双端队列可以在队列任意一端 ...

  6. 《恋上数据结构第1季》队列、双端队列、循环队列、循环双端队列

    队列(Queue) 队列 Queue 队列的接口设计 队列源码 双端队列 Deque 双端队列接口设计 双端队列源码 循环队列 Circle Queue 循环队列实现 索引映射封装 循环队列 – %运 ...

  7. ArrayDeque(双端队列的线性实现)详解

    ArrayDeque 是 java 中对双端队列的线性实现 一. 特性 无容量大小限制,容量按需增长: 非线程安全队列,无同步策略,不支持多线程安全访问: 当用作栈时,性能优于Stack,当用于队列时 ...

  8. Java 集合深入理解(10):Deque 双端队列

    点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 什么是 Deque Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样,蛋 ...

  9. 算法竞赛入门【码蹄集进阶塔335题】(MT2051-2075)

    算法竞赛入门[码蹄集进阶塔335题](MT2051-2075) 文章目录 算法竞赛入门[码蹄集进阶塔335题](MT2051-2075) 前言 为什么突然想学算法了? 为什么选择码蹄集作为刷题软件? ...

最新文章

  1. python类的__slots__属性、__del__属性、上下文(__enter__和__exit__)、
  2. java经典模式:七种模式样例
  3. 中国二氧化碳激光器行业现状研究与可行性分析报告2022-2028年版
  4. JavaScript id_好程序员web前端分享Javascript中函数作为对象
  5. java笔试之从单向链表中删除指定值的节点
  6. C语言 素数三种思路求解,C语言求素数
  7. 15 行 Java 代码实现一个标准输出的进度条,其中的知识点你知道但并不一定会用...
  8. 怎样卸载deepin系统_双系统卸载deepin的方法是什么_双系统完全卸载deepin的方法图文步骤...
  9. 2021李宏毅作业hw3 --食物分类。对比出来的80准确率。
  10. 美国队用计算机计算排球队员,排球理论考试题库
  11. Muti-Scale Resnet论文初步复现
  12. 多可系统如何设置登录IP限制
  13. 塔夫茨计算机科学,塔夫茨大学计算机科学研究生语言及申请要求-费用-课程设置...
  14. Go语言如何捕获fatal致命错误并输出到日志
  15. oracle数据linux中的位置,Oracle中执行计划的存储位置
  16. MyEclipse中maven的下载、配置及安装
  17. 龙芯的全新自主指令集到底强在何处?
  18. TIOBE 2021 年度编程语言:Python
  19. python相关分析和关联分析
  20. 获取某一个<tr>中<td>的值

热门文章

  1. 2019年-APP测试流程整理
  2. 无聊猿之后,PlatoFarm大手笔空投Dao社区
  3. 爱情:诚心、恒心、耐心、爱心
  4. Ubuntu18.04 开机自启服务------网易云音乐api自启服务
  5. 世界各国犯罪率统计系列:各国暴力犯罪性犯罪(2003-2021)
  6. eclipse添加注释
  7. IT技术晋级之路-锁定任务栏
  8. windows cmd命令进入文件夹目录
  9. OSChina 周二乱弹 —— 感觉和十几万擦肩而过
  10. Unity3D Shader系列之圆环