这道题目的意思是,有一个队列,它里面会存储一些数值,现在,要求你需要在 O(1) 的时间内返回这个队列中最大的那个值。

      这道题目的和栈中最大值最小值问题是一样的解法,都是需要一个辅助的东西,对于这道题目,我需要的是一个辅助队列。

      由于是需要找到最大值,我的做法是,如果辅助队列为空,那么,当数据入队列的时候就需要同时放入队列和辅助队列中;如果辅助队列不为空,但是入队列的那个元素比辅助队列的队首元素大或者相等,那么,也是需要同时放入两个队列中;其他情况,只需要放入队列中就可以了。当出队列的时候,如果队列的队首元素和辅助队列的队首元素相同,那么需要队列和辅助队列同时删掉队首元素。

      有了上述的思想,我们不难得到如下的代码:

      函数声明:

/*3.7 队列中最大值问题*/
class DutQueue
{
public :void    DutEnQueue(int);int     DutFront();void DutPop();int        DutMaxElement();private :std :: queue<int> q1, q2;
};

      源代码:

void DutQueue :: DutEnQueue(int v)
{this -> q1.push(v);if (this -> q2.empty())this -> q2.push(v);else if (this -> q2.front() <= v)this -> q2.push(v);
}int DutQueue :: DutFront()
{return this -> q1.front();
}void DutQueue :: DutPop()
{if (this -> q1.front() == this -> q2.front()){this -> q1.pop();this -> q2.pop();}elsethis -> q1.pop();
}int DutQueue :: DutMaxElement()
{return this -> q2.front();
}



编程之美3.7 队列中最大值问题相关推荐

  1. c语言找出递增子数组的长度,编程之美2.16 数组中最长递增子序列的长度

    改进的方法看的头大了却还是不清楚,哎...搞算法的苦啊,纠结啊. 编程之美这本书里面就有关于这道题的一些解法,求一个一位数组中的最长序列的长度.例如,在序列1,3,2中,最长递增序列是1,3. 这道题 ...

  2. 编程之美2.10:寻找数组中的最大值和最小值

    编程之美2.10: 对于一个有N个整数组成的数组,需要比较多少次才能把最大值和最小值找出来呢? 算法的思想是: 分而治之 测试数据:---------------------------------- ...

  3. 编程之美2.1 求二进制中1的个数

    最近一段的时间,一直在看编程之美之类的算法书籍,刚开始看编程之美,感觉到难度太大,有时候也不愿意去翻动这本书,不过,经过一段时间的修炼,我也彻底的喜欢上这本书了, 书中的算法涉及到很多方面,树,链表, ...

  4. 2017“编程之美”终章:AI之战勇者为王

    编者按:8月15日,第六届微软"编程之美"挑战赛在选手的火热比拼中圆满落下帷幕."编程之美"挑战赛是由微软主办,面向高校学生开展的大型编程比赛.自2012年起, ...

  5. Java 并发编程之美:并发编程高级篇之一-chat

    借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作 ...

  6. Java 并发编程之美:并发编程高级篇之一

    借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作 ...

  7. UART0串口编程(四):UART0串口编程之在UC/OS—II中遭遇的危机

    UART0串口编程之在UC/OS-II中遭遇的危机 一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来 ...

  8. 层次遍历二叉树(编程之美3.10)

    问题(假定根节点位于第0层) 1. 层次遍历二叉树(每层换行分开) 2. 层次遍历二叉树指定的某层 例如 上图中 1. 1 2 3 4 5 6 7 8 2. 第三层 7 8 可以看出得出第二问的解,第 ...

  9. 编程之美2.8 找符合条件的整数

    这个题目是,给定一个整数 N,需要寻找另外一个整数 M,使得 N * M 得到的结果十进制表示中只存在1和0两个数字.首先看到这个题目,第一思想肯定是 使 M = 1,并依此递增 M 的值,直到 N ...

最新文章

  1. 隐私计算,企业数字化转型的BUFF之争
  2. weka 初练之 文本分类
  3. 我想要一种语言,只需对它说我要干什么就行
  4. Oracle游标使用
  5. 新氧科技成为互联网医疗美容第一股 首日股价疯狂上涨32%
  6. 崩溃!还未修复的 Bug,凌晨三点遭到黑客 DDoS 攻击 | 技术头条
  7. 无法绑定到新的显示成员,参数名:newDisplayMember
  8. Eclipse安装中文简体语言包(官方下载安装教程)
  9. 云计算机房架构图,云计算架构技术与实践
  10. 概念学习(Concept learning)
  11. ipv6和ipv4有什么区别
  12. sql server操作1:数据库及基本表的建立
  13. php显示某年某月某日,输入某年某月某日,判断这一天是这一年的第几天?
  14. 搜索广告的整体架构-子模块划分
  15. java根据经纬度获取地址信息
  16. numeric scale mysql_mysqldecimal、numeric数据类型
  17. python数据分析实验报告_使用 Python 3 进行气象数据分析
  18. python复制单元格格式太多_你觉得复制粘贴excel浪费时间,那你该学这些技巧
  19. 什么是微服务?微服务架构的优缺点、应用
  20. JVM(二十二) -- 性能监控与调优(三) -- JVM监控及诊断工具--GUI篇

热门文章

  1. jQuery中排除指定元素,同时选择剩下的所有元素
  2. 一直都想总结一下自己遇到过的web安全方面的问题--2015-03-31
  3. Digital Image Processing 学习笔记3
  4. break continue 016
  5. heartbeat+drbd+mysql构建mysql高可用群集
  6. iis8.5部署net项目
  7. Dapper基础知识一
  8. x window的奥秘
  9. 垃圾收集简介 - GC参考手册
  10. [转载]项目风险管理七种武器-孔雀翎