/////////////////////////////////////////////////////////////////////////////////////

// 3. 题目21  包含Min函数的栈

template <typename TYPE>
class CMinInStack
{
public:
void Push(const TYPE& value);
const TYPE Pop();
const TYPE& GetMinValue() const; private:
stack<TYPE> m_stDataStack;
stack<TYPE> m_stMinStack;
}; template <typename TYPE>
const TYPE& CMinInStack<TYPE>::GetMinValue() const
{
assert(!m_stDataStack.empty() && !m_stMinStack.empty()); return m_stMinStack.top();
} template <typename TYPE>
const TYPE CMinInStack<TYPE>::Pop()
{
assert(!m_stDataStack.empty() && !m_stMinStack.empty()); TYPE value = m_stDataStack.top();
m_stDataStack.pop();
m_stMinStack.pop(); return value;
} template <typename TYPE>
void CMinInStack<TYPE>::Push(const TYPE& value)
{
// 1.向栈中添加元素
m_stDataStack.push(value); // 2.往辅助栈中添加最小元素
if (m_stMinStack.empty() || value < m_stMinStack.top())
{
m_stMinStack.push(value);
}
else
{
m_stMinStack.push(m_stMinStack.top());
}
} void MinInStackTestFunc()
{
cout << "\n\n --------------- MinInStackTestFunc Start -------------->" << endl; int aiArray[] = {3, 4, 5, 8, 9, 1, 4, 45, 89};
int iLen = sizeof(aiArray) / sizeof(int);
TRAVERSAL_ARRAY(aiArray, iLen); CMinInStack<int> stMinStack; for (int i = 0; i < iLen; i++)
{
stMinStack.Push(aiArray[i]);
} printf("最小栈 最小元素: %d\n", stMinStack.GetMinValue()); printf("最小栈 弹出元素: %d\n", stMinStack.Pop());
printf("最小栈 弹出元素: %d\n", stMinStack.Pop());
printf("最小栈 最小元素: %d\n", stMinStack.GetMinValue()); printf("最小栈 弹出元素: %d\n", stMinStack.Pop());
printf("最小栈 最小元素: %d\n", stMinStack.GetMinValue()); printf("最小栈 弹出元素: %d\n", stMinStack.Pop());
printf("最小栈 弹出元素: %d\n", stMinStack.Pop());
printf("最小栈 弹出元素: %d\n", stMinStack.Pop());
printf("最小栈 最小元素: %d\n", stMinStack.GetMinValue()); cout << "\n\n --------------- MinInStackTestFunc End -------------->" << endl; }

题目21 包含Min函数的栈的更多相关文章

  1. 【算法题目】包含min函数的栈

    题目来源:<剑指offer>面试题21 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min,push以及pop的时间复杂度都是O(1). 分 ...

  2. 剑指Offer:面试题21——包含min函数的栈(java实现)

    问题描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min,push及pop的时间复杂度都是O(1). 思路:加入一个辅助栈用来存储最小值集合 (这里要注 ...

  3. 剑指offer-面试题21.包含min函数的栈

    题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数. 在该栈中,调用min,push及pop的时间复杂度都是O(1). 这一题实际上需要一个辅助栈存储最小值: 1.在模板类定 ...

  4. 《剑指offer》面试题21—包含min函数的栈

    题目:定义栈数据结构,并在该数据结构中实现一个能获得栈最小元素的函数min.要求push,min,pop时间都是O(1). 思路:要用一个辅助栈,每次有新元素压栈时辅助栈压入当前最小元素:min函数直 ...

  5. 《剑指offer》面试题21 包含min函数的栈 Java版

    (min函数的作用是返回栈内最小值) 首先这个栈要具有普通栈所具有的push()和pop()方法,那么内部一定包含一个Stack.至于还要能实现min函数,而且还是在O(1)时间复杂度内,我们不得不考 ...

  6. 21 包含min函数的栈

    定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. C++: class Solution { private: stack<int> dataStack ; stac ...

  7. 剑指Offer面试题:19.包含Min函数的栈

    一.题目:包含Min函数的栈 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min.push及pop的时间复杂度都是O(1). 这里我们要实现的就是min ...

  8. 栈二:包含min函数的栈

    /** * 题目:包含min函数的栈 * 描述:  定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数.  *  注:用data来保存数据,用另一个栈min保存依次入栈最小的数 *  ...

  9. 【编程题目】设计包含 min 函数的栈

    2.设计包含 min 函数的栈(栈)定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素.要求函数 min.push 以及 pop 的时间复杂度都是 O(1). 我的思路: 用一个额外的 ...

随机推荐

  1. CF757F Team Rocket Rises Again——最短路+支配树

    CF757F Team Rocket Rises Again 全体起立,全体起立,这是我A的第一道黑题(虽然是CF的): 来一波番茄攻击: 不扯淡了,这道题也是学习支配树(之前)应该做的题: 和灾难不 ...

  2. 使用tmate快速分享你的终端会话

    tmate 的意思是 teammates,它是 tmux 的一个分支,并且使用相同的配置信息(例如快捷键配置,配色方案等).它是一个终端多路复用器,同时具有即时分享终端的能力.它允许在单个屏幕中创建并 ...

  3. x2goserver 连接问题

    The remote proxy closed the connection while negotiating the session. This may be due to the wrong a ...

  4. Linux make menuconfig打开失败

    OS:Ubuntu 16.04 LTS 使用“make menuconfig”配置kernel时,提示make menuconfig打开失败 $ make menuconfig *** Unable ...

  5. oracle查询表指定字段类型

    查询表某字段类型,如下: SELECT data_type FROM all_tab_cols WHERE table_name = UPPER('SRIS_P_BaseInfo') and colu ...

  6. 使用HttpClient调用WebAPI接口,含WebAPI端示例

    API端: using log4net; using System; using System.Collections.Generic; using System.IO; using System.L ...

  7. Locust - A modern load testing framework https://locust.io/

    Locust - A modern load testing frameworkhttps://locust.io/

  8. 记一次环境变量导致的elasticsearch启动错误:max file descriptors [65535] for elasticsearch process is too low, incre

    问题描述,elasticsearch启动时报max file descriptors错误: [hadoop@node-33 elasticsearch-5.4.0]$ bin/elasticsearc ...

  9. 贝济埃曲线quadTo与传统的手势轨迹平滑度对比分析

    package com.loaderman.customviewdemo; import android.content.Context; import android.graphics.Canvas ...

  10. ios排序NSArray(数字.字符串)

    NSArray *originalArray = @[@"1",@"21",@"12",@"11",@"0&q ...