Freda的队列

这个题目一眼看,数据范围就很大,如果直接用队列,大于0的元素要放在开头,还要复制操作,于是就想,可不可以用数组进行模拟呢?可以的,但是发现,数组每次下标增加,新的元素都是放在之前元素的后面,好像不符合题目放在队头的描述,但是如果我们把下标前进当成head,数组下标0的位置当成末尾,就可以了。abcabc的复制和cbacba没有本质上的区别只有相反一下而已,abcabc放入新的d也是dabcdabc和cbacbad没有什么差别,于是就借助这点,完成了基本操作。但是复制操作可能会使得数组越界,根据题目的描述,我们发现每次只取出一个数,也就是说,数组再长我们也是取出不完的,所以,限定复制长度再10^6为止,我们就实现了数组的优化和时间的优化和空间的优化。
下面就是我实现的代码

#include <iostream>
#include <stdio.h>
using namespace std;
const int MAX = (1e6 + 10) * 2;
int a[MAX];
int main(){int n;scanf("%d", &n);int x;int head = 0, tail = 0;for(int i = 0; i < n; i++){scanf("%d", &x);if(x > 0){a[head++] = x;} else if(x == 0){if(head>1e6) continue;int count = head;for(int i = tail; i < head; i++){a[count++] = a[i];}head = count;}else {if(head == tail)continue;printf("%d\n", a[--head]);}}return 0;
}

在看完代码后,应该有一种感觉,如果我们用数组模拟,可以很好的实现在头部增加元素和删除元素。

# Freda的队列相关推荐

  1. Freda的队列 简单模拟

    Freda的队列 Problem Description Freda有一个队列,最初它是空的. 现在Freda接到了一系列指令,每个指令包含一个整数x. 如果x>0,表示在队列开头加入一个数x. ...

  2. Freda的越野跑(openjudge)

    Freda的越野跑-openjudge    归并算法求逆序对数 描述 Freda报名参加了学校的越野跑.越野跑共有N人参加,在一条笔直的道路上进行.这N个人在起点处站成一列,相邻两个人之间保持一定的 ...

  3. 蒟蒻的ACM数据结构(四)-单调队列和单调栈

    单调队列和单调栈 一.概念 二.实现 三.题目 单调队列 洛谷P1886 滑动窗口 解析 单调栈 [GXOI/GZOI2019]与或和 解析 POJ3250 Bad Hair Day 解析 POJ 2 ...

  4. RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器

    本系列是「RabbitMQ实战:高效部署分布式消息队列」和 「RabbitMQ实战指南」书籍的读书笔记. RabbitMQ 中重要概念 1. 生产者 生产者(producer)创建消息,然后发送到代理 ...

  5. Redis 笔记(04)— list类型(作为消息队列使用、在列表头部添加元素、尾部删除元素、查看列表长度、遍历指定列表区间元素、获取指定区间列表元素、阻塞式获取列表元素)

    Redis 的列表是链表而不是数组.这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n). 当列表弹出了最后一个元素之后,该数据结构自动被删除, ...

  6. 翻转二叉树 c语言实现 递归 栈 队列

    前言 题目比较好理解,就是翻转二叉树 代码 c语言实现 #include<stdio.h> #include<stdlib.h> #include<string.h> ...

  7. 队列:实用程序服务和数据结构

    队列:实用程序服务和数据结构 Queues: utility services and data structures 队列实用程序服务 Nucleus RTOS有四个API调用,它们提供与队列相关的 ...

  8. 2021年大数据Kafka(一):❤️消息队列和Kafka的基本介绍❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 消息队列和Kafka的基本介绍 一.什么是消息队列 二.消息队列的应用场景 ...

  9. Laravel/Lumen 使用 Redis队列

    一.概述 在Web开发中,我们经常会遇到需要批量处理任务的场景,比如群发邮件.秒杀资格获取等,我们将这些耗时或者高并发的操作放到队列中异步执行可以有效缓解系统压力.提高系统响应速度和负载能力. 二.配 ...

最新文章

  1. jquery之hide()用法详解
  2. php 调用变量方法名,php中引用(变量和函数名前加符号)用法
  3. 如何使div像星星一样,简易demo,授人以鱼,自行更改完善
  4. Tree.Panel各项属性
  5. poj1969---找规律
  6. 605. 种花问题003(贪心算法+思路+详解)
  7. python算法实现源码_Python实现七个基本算法
  8. bzoj1562 [NOI2009]变换序列
  9. Linux下安装jboss并设置自启动服务
  10. 21-hadoop-weibo推送广告
  11. HttpUtil请求工具类
  12. win7 美化Linux,让XP的主题背景拥有Win7一样的华丽 让Linux系统和Win8一模一样!超华丽Linux仿Win...
  13. qt开源项目: tiled 瓦片 游戏地图编辑器
  14. Visual Studio 2019配置OpenGL环境
  15. DAY1古典概型和几何概型
  16. 通过CSS代码判断浏览器方法大全
  17. 可变参数和Steam流的基本使用
  18. word表格跨页显示时缺少上框线
  19. 【Linux】Linux学习(三)常用基本命令(一)
  20. 干货 | Java8的几个实用新特性教程分享给你

热门文章

  1. JS黄金分割法实现随机漂亮颜色!
  2. 简单典型二阶系统_MIT—微分方程与线性代数笔记2.1 二阶常微分方程
  3. c语言rand函数源码路径,C语言中的rand()函数
  4. 认识浏览器:浏览器内核/页面加载/DOM和DOM树
  5. 另一只眼看软件研发效能提升,软件研发效能的“人性”与“物性”
  6. java去掉首尾字符_去掉字符串首尾指定的字符或空格
  7. buctoj-python 2022.5.19
  8. 【2021-08-05 修订】【梳理】计算机网络:自顶向下方法 第六章 链路层和LAN(docx)
  9. 计算机上做报纸模板,word中怎么制作报纸排版模板
  10. 斑马打印机常见问题解决方案 条码打印机常见问题解决方案