[剑指offer]面试题21:包含min函数的栈

面试题21:包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。

栈内压入3、4、2、1之后接连两次弹出栈顶数字再压入0时,数据栈、辅助栈和最小值的状态

在这里插入图片描述

代码如下:

#include <iostream>
#include <stack>
#include <assert.h>
using namespace std;template<typename T>
class StackWithMin
{
public:void push(const T&value);void pop();const T&min();
private:stack<T>m_data;stack<T>m_min;
};template<typename T> 
void StackWithMin<T>::push(const T &value)
{m_data.push(value);if (m_min.size() == 0 || value < m_min.top()) m_min.push(value);else m_min.push(m_min.top());
}template<typename T> 
void StackWithMin<T>::pop()
{assert(m_data.size() > 0 && m_min.size() > 0);m_data.pop();m_min.pop();
}template<typename T>
const T&StackWithMin<T>::min()
{assert(m_data.size() > 0 && m_min.size() > 0);return m_min.top();
}

测试用例:
● 新压入栈的数字比之前的最小值大。
● 新压入栈的数字比之前的最小值小。
● 弹出栈的数字不是最小的元素。
● 弹出栈的数字是最小的元素。
本题考点:
● 考查分析复杂问题的思维能力。在面试的时候,很多应聘者都止步于添加一个变量保存最小元素的思路。其实只要举个例子多做几次入栈、出栈的操作就能看出问题,并想到也要把最小元素用另外的辅助栈保存。当我们面对一个抽象复杂的问题的时候,可以用几个具体的例子来找出规律。找到规律之后再解决问题,就容易多了。
● 考查应聘者对栈的理解。

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

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

相关文章

SpringCloud常见问题总结(二)

Spring Cloud各组件属性配置 SpringCloud中的大部分问题可以使用配置属性来规避&#xff0c; Spring Cloud的配置 Spring Cloud的所有组件配置都在其官方文档的附录中Spring Cloud 整合了很多类库&#xff0c;例如Eureka&#xff0c; Ribbon&#xff0c; Feign等&#xff0c…

IO 模型知多少

1. 引言同步异步I/O&#xff0c;阻塞非阻塞I/O是程序员老生常谈的话题了&#xff0c;也是自己一直以来懵懵懂懂的一个话题。比如&#xff1a;何为同步异步&#xff1f;何为阻塞与非阻塞&#xff1f;二者的区别在哪里&#xff1f;阻塞在何处&#xff1f;为什么会有多种IO模型&am…

[剑指offer]面试题22:栈的压入、弹出序列

面试题22&#xff1a;栈的压入、弹出序列 题目&#xff1a;输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5 是某栈的压栈序列&#xff0c;序列4、5、3、2、1…

Ubuntu上安装使用Docker

Docker简介 Docker是一个开源的容器引擎&#xff0c;他有助于更快的交付应用。Docker可以将应用程序和基础设施层做隔离&#xff0c;并且能将基础设施当做程序一样进行管理。使用Docker&#xff0c;可以更快的打包&#xff0c;测试以及部署应用程序&#xff0c;并且可以缩短从…

让 .NET 轻松构建中间件模式代码

让 .NET 轻松构建中间件模式代码Intro在 asp.net core 中中间件的设计令人叹为观止&#xff0c;如此高大上的设计何不集成到自己的代码里呢。于是就有了封装了一个简单通用的中间件模板的想法&#xff0c;以后有需要的时候就可以拿来即用。接口定义这里按执行的委托是同步还是异…

[剑指offer]面试题23:从上往下打印二叉树

面试题23&#xff1a;从上往下打印二叉树 题目&#xff1a;从上往下打印出二叉树的每个结点&#xff0c;同一层的结点按照从左到右的顺序打印。例如输入图4.5中的二叉树&#xff0c;则依次打印出8、6、10、5、7、9、11。 二叉树结点的定义如下&#xff1a; struct BinaryTree…

[剑指offer]面试题26:复杂链表的复制

面试题26&#xff1a;复杂链表的复制 题目&#xff1a;请实现函数ComplexListNodeClone&#xff08;ComplexListNodepHead&#xff09;&#xff0c;复制一个复杂链表。在复杂链表中&#xff0c;每个结点除了有一个m_pNext指针指向下一个结点外&#xff0c;还有一个m_pSibling 指…

SpringCloud + Docker

Dockerfile构建Docker 镜像 注意这里说的Dockerfile是指的一个文本文件&#xff0c;类似txt&#xff0c;只不过名字是Dockerfile&#xff0c;里面编辑Docker的一些指令&#xff0c;指令作用在于描述构建镜像的细节。如下一个简单的案例&#xff0c;用上一节中下载的nginx镜像来…

从编码层面对比java和c#

java和c#都是面向对象编程高级语言&#xff0c;总体上来讲&#xff0c;它们还是很相似的&#xff0c;因为它们在发展过程中都很大程序上学习了对方不少优秀的特性。所以&#xff0c;一般来说&#xff0c;从其中一门语言转换到另外一门语言应该都不会有很大问题。虽然说这两门语…

[剑指offer]面试题28:字符串的排列

面试题28&#xff1a;字符串的排列 题目&#xff1a;输入一个字符串&#xff0c;打印出该字符串中字符的所有排列。例如输入字符串abc&#xff0c;则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。 思路: 这是一个典型的递归问题&#xff0c;考虑…

红帽借“订阅”模式成开源一哥,首创者升任总裁

4 月 6 日&#xff0c;红帽公司宣布&#xff0c;产品和技术总裁 Paul Cormier 即日起任红帽总裁&#xff0c;并兼任首席执行官。Paul Cormier 是开源商业化“订阅”模式的提出者&#xff0c;这一模式促使红帽达成连续超70个季度的盈利&#xff0c;身价升至340亿美金&#xff0c…

Docker中数据管理

Docker数据管理 生产环境中&#xff0c;对数据进行持久化&#xff0c;或者需要在多个容器直接进行数据共享&#xff0c;这必然涉及到容器的一些数据管理的操作。容器中数据管理主要有两种方式&#xff1a; 数据卷&#xff08;Data Volumes&#xff09;&#xff1a;容器内数据直…

[剑指offer]面试题31:连续子数组的最大和

面试题31&#xff1a;连续子数组的最大和 题目&#xff1a;输入一个整型数组&#xff0c;数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O&#xff08;n&#xff09;。 ❖ 解法一&#xff1a;举例分析数组的规…

C#两大知名Redis客户端连接哨兵集群的姿势

前言前面《Docker-Compose搭建Redis高可用哨兵集群》&#xff0c;我的思路是将Redis、Sentinel、Redis Client App链接到同一个网桥网络&#xff0c;这个网桥内的Redis Client App就可以使用ContainerIP访问网桥内任意redis节点。同一网桥网络访问规避了Docker上发生的NAT&…

Docker之Dockerfile详解

使用Dockerfile创建镜像 Dockerfile是一个文本格式的配置文件&#xff0c;我们可以利用Dockerfile来快速的创建一个自定义的镜像。 基本结构 Dockerfile由一行命令语句组成&#xff0c;并且支持以#开头的注释一般包括四个部分&#xff1a;基础镜像信息&#xff0c;维护者信息…

[剑指offer]面试题34:丑数

面试题34&#xff1a;丑数 题目&#xff1a;我们把只包含因子2、3和5的数称作丑数&#xff08;Ugly Number&#xff09;。求按从小到大的顺序的第1500个丑数。例如6、8都是丑数&#xff0c;但14不是&#xff0c;因为它包含因子7。习惯上我们把1当做第一个丑数。 ❖ 逐个判断每…

创业的N种死法

点击蓝字关注&#xff0c;回复“职场进阶”获取职场进阶精品资料一份互联网的江湖一直流传着大佬们的创业传奇。马云上厕所几分钟敲定几千万美金融资。王石走投无路靠倒卖玉米赚到上百万从此逆袭。扎克伯格为了获得哈佛美女照片&#xff0c;开发一个小玩意从此改变了世界。传奇…

Docker容器实战思维

Docker成功的基础 Docker的实现用到的基础技术&#xff08;cgroups, namespace&#xff0c;分层文件系统&#xff09;在Docker之前已经存在很多年&#xff0c;并且 Linux Containers&#xff08;LXC&#xff09;也在很多企业的环境中得到了大量的应用实践&#xff0c;并得到明…

[剑指offer]面试题35:第一个只出现一次的字符

面试题35&#xff1a;第一个只出现一次的字符 题目&#xff1a;在字符串中找出第一个只出现一次的字符。如输入"abaccdeff"&#xff0c;则输出’b’。 代码如下: char FirstNotRepeatingChar(char *pString) {if (pString nullptr) return \0;const int tableSize…

dotNET Core 3.X 请求处理管道和中间件的理解

理解 dotNET Core 中的管道模型&#xff0c;对我们学习 dotNET Core 有很大的好处&#xff0c;能让我们知其然&#xff0c;也知其所以然&#xff0c;这样在使用第三方组件或者自己写一些扩展时&#xff0c;可以避免入坑&#xff0c;或者说避免同样的问题多次入坑。本文分为以下…