剑指 Offer 栈与队列
09. 用两个栈实现队列
没啥意思 不要想复杂了 就是暴力
class CQueue {
public:
CQueue() {
}
/*
一个主栈 一个缓存栈
来回导 得到队头
copy后一端变空了
*/
stack<int>stk,cache;
void copy(stack<int>&a,stack<int>&b){
while(a.size()){
b.push(a.top());
a.pop();
}
}
void appendTail(int value) {
stk.push(value);
}
int deleteHead() {
if(stk.empty())return -1;
copy(stk,cache);
int res=cache.top();
cache.pop();
copy(cache,stk);
return res;
}
};
30. 包含min函数的栈
class MinStack {
public:
/** initialize your data structure here. */
MinStack() {
}
stack<int>stk,minn;
void push(int x) {
stk.push(x);
if(minn.empty()||minn.top()>=x)minn.push(x);
}
void pop() {
if(stk.top()==minn.top())minn.pop();
stk.pop();
}
int top() {
return stk.top();
}
int min() {
return minn.top();
}
};
剑指 Offer 栈与队列的更多相关文章
- 剑指Offer——栈的java实现和栈的应用举例
剑指Offer--栈的java实现和栈的应用举例 栈是一种先进后出的数据结构, 栈的实现如下: 首先定义了栈需要实现的接口: public interface MyStack<T> { / ...
- 剑指 Offer 59 - II. 队列的最大值--滑动窗口的建模+Deque的基本使用(常用方法)
剑指 Offer 59 - II. 队列的最大值 题目链接 package com.walegarrett; /** * @Author WaleGarrett * @Date 2020/12/3 1 ...
- 剑指offer - 栈的压入弹出序列 - JavaScript
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 ...
- 剑指offer---05---用栈实现队列
题意 给了两个栈去实现队列 分析 两个栈如下情况 1 2 4 3 这个时候就不能够把4插入到第二个弹出栈了否则弹出顺序出错. 所以这个时候就应该等第二个栈空了的时候再 ...
- 剑指Offer 栈的压入、弹出序列
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...
- 剑指offer 栈的压入弹出 顺序
判断: 如果下一个弹出的数字刚好是栈顶元素,那么直接弹出 如果下一个弹出的数字不在栈顶,我们要把压栈序列中,还没有入栈的数字压入辅助栈,知道把下一个需要弹出的数字压入栈顶 如果所有的数字都入栈,但是仍 ...
- 剑指offer——栈的压入、弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个栈是否为该栈的弹出顺序.假设压入栈的所有数字都不相等.例如序列1,2,3,4,5是某个栈的压入顺序,序列4,5,3,2,1是该栈序列的一 ...
- 剑指offer 栈的压入和弹出
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈 ...
- 用js刷剑指offer(栈的压入、弹出序列)
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...
- 剑指offer计划27(栈与队列困难)---java
1.1.题目1 剑指 Offer 59 - I. 滑动窗口的最大值 1.2.解法 解题思路:(来自作者bigbeats) 相当于维护一个最大队列(队头元素最大,向队尾非严格递减) 在未形成窗口前,先构 ...
随机推荐
- LeetCode 双周赛 98,脑筋急转弯转不过来!
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 昨晚是 LeetCode 第 98 场双周赛,你参加了吗?这场周赛需要脑筋急转弯,转不过 ...
- C# System.Threading.Timer 详解及示例
前言 定时器功能在日常开发中也是比较常用的,在 .Net 中实际上总共有五种定时器,分别是:System.Timers.Timer.System.Threading.Timer.System.Wind ...
- 利用反射和代理简单模拟mybatis实现简单的CRUD
利用反射接口做java数据库操作 今天突发奇想,好像一些基本的CRUD操作路数都是一样的,又想到mybatis中的操作,便想着简单的模拟一下.随便写写,就当练习反射了. Dao接口类: 这里使用泛型, ...
- Java刷题常用的数据结构总结
目录 1. 基础运算 2. 字符串类 3. 数组类与链表 4. 栈和队列 5. 字典类 6. 树 1. 基础运算 //int型相关操作 Integer.INT_MAX;//int型最大值 Intege ...
- js中的for循环,循环次数会多出一次。当循环到最后一个的时候,循环还会继续,并且此时i就变成remove?
for (i in points) 改成 for(var i = 0; i < points,length; i++)
- 如何把已安装的nodejs高版本降级为低版本(图文教程)
第一步.先清空本地安装的node.js版本 1.按健win+R弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出,输入cmd再点击回车键) 2.然后进入命令控制 ...
- pytorch学习笔记五之通过示例学习
1.概述¶ PyTorch 的核心是提供两个主要功能: n 维张量,类似于 NumPy,但可以在 GPU 上运行 用于构建和训练神经网络的自动微分 我们将使用将三阶多项式拟合y = sin(x ...
- pat 乙级 1025 反转链表
目前无法ac过最后一个测试点,其余ac,原因是有无效节点存在,但这个代码加上去除无效节点函数时便会运行超时 还没想出来怎么做,先这样吧 #include <stdio.h> #includ ...
- js获取浏览器宽度和高度值
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>请调整浏览器窗口</t ...
- Spanve:一种检测大规模空间转录组学数据中空间变异基因的有效统计方法
文章题目 Spanve: an Effective Statistical Method to Detect Spatially Variable Genes in Large-scale Spati ...