实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
来源:互联网 发布:餐饮进销存软件 编辑:程序博客网 时间:2024/06/02 13:28
思路:push:利用两个栈,第一个栈顺序存放元素,第二个栈当为空时,先存入一个元素,再次存入时,如果要存放的元素比第二个栈顶的元素大,则不存入,小于或等于的时候存入,就能保证第二栈顶都是第一个栈中最小的元素pop:应该判断第一个栈顶的元素与第二个栈顶的元素是否相等,不等,则只删除栈一的元素,相等的时候,栈1与栈2 都删除,防止错删元素
#pragma once#include<iostream>#include<stack>using namespace std;typedef int T;class CMyStack {public: CMyStack() {} ~CMyStack() {} void Push(T x) { s1.push(x);//先把数据放在栈1中 if (s2.empty() || x <= s2.top()) s2.push(x); //如果栈2 为空或者栈2顶的元素大于x,把x放入栈2,始终保持栈2顶的元素最小 } void Pop() { if (s1.top() == s2.top()) s2.pop();//如果栈1 顶的元素等于栈2顶的元素,删除栈2顶元素再删除栈一顶元素,保证不会错删小元素 } T Min()//如果栈2不为空,弹出栈2顶元素,则为最小元素 { if (!s2.empty()) return s2.top(); else cout<<"Mystack is empty"<<endl; } void Print() { while (!s1.empty()) //打印栈一元素 { cout << s1.top() << "->"; s1.pop(); } cout << endl; while (!s2.empty()) //打印栈2元素 { cout << s2.top() << "->"; s2.pop(); } cout << endl; }private: stack<T> s1, s2;};
阅读全文
0 0
- 【栈队列】实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 栈--实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、 Min(返回最小值的操作)的时间复杂度为O(1)
- 模拟实现一个Stack 要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push、Pop、Min(返回最小值的操作)的时间复杂度为O(1)
- 面试题(实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1))
- 【数据结构】实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- ~实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)~
- 剑指offer 21---实现一个栈, 要求实现Push( 出栈) 、 Pop( 入栈) 、 Min( 返回最小值的操作) 的时间复杂度为O(1)
- 1. 实现一个栈,要求实现 Push (出栈)、 Pop (入栈)、 Min (返回最小值的操作) 的时间复杂度为 O(1)
- 百度2017春招笔试真题编程题集合--买帽子
- sklearn浅析(一)——sklearn的组织结构
- 移动产品经理常用工具
- Android中如何通过代码的方式获取APP的SHA1值.
- Hibernate Criteria 查询---addOrder用法添加排序
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 欢迎使用CSDN-markdown编辑器
- git 命令收录
- java多线程详解
- NT驱动程序和WDM驱动程序的区别
- 怎样设计一个好的数据库
- unity3d与android
- Maven入门
- 如何修改一次代码就可以完成多种类型 cell 的 UITableView 增删修改顺序?