代码编织梦想

难度等级:简单

上一篇算法:

 剑指 Offer 09. 用两个栈实现队列【栈与队列】

力扣此题地址:

剑指 Offer 09. 用两个栈实现队列 - 力扣(LeetCode)

1.题目:包含min函数的栈

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

2.解题思路:

1.设置两个栈对象A 和 B,A用来存储全部数据,B用来存储严格降序的数据

 参考:

面试题30. 包含 min 函数的栈(辅助栈,清晰图解) - 包含min函数的栈 - 力扣(LeetCode)

3.代码实现:

Java 代码中,由于 Stack 中存储的是 int 的包装类 Integer ,因此需要使用 equals() 代替 == 来比较值是否相等。

class MinStack {
    Stack<Integer> A, B;
    public MinStack() {
        A = new Stack<>();
        B = new Stack<>();
    }
    public void push(int x) {
        A.add(x);
        if(B.empty() || B.peek() >= x)
            B.add(x);
    }
    public void pop() {
        if(A.pop().equals(B.peek()))
            B.pop();
    }
    public int top() {
        return A.peek();
    }
    public int min() {
        return B.peek();
    }
}


/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(x);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.min();
 */
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_51697147/article/details/128014085

剑指 Offer 30. 包含min函数的栈C++-爱代码爱编程

题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 解题思路:一个栈存数据,一个栈存最小值。 代码: class MinStack { public: /** initialize your data structure here. *

【剑指 Offer】30. 包含min函数的栈(详细解析!)-爱代码爱编程

第 1 日:包含min函数的栈 题目链接:https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/ 题目 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinSt

剑指Offer 30.包含 min 函数的栈(Python)-爱代码爱编程

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、top、push 及 pop 的时间复杂度都是 O(1)。 # 例子: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); m

剑指 Offer 30. 包含min函数的栈(JavaScript语言)-爱代码爱编程

思路 本题难点是将 min() 函数复杂度降为 O(1),可通过建立辅助栈实现。 数据栈 A : 栈 A 用于存储所有元素,保证入栈 push() 函数、出栈 pop() 函数、获取栈顶 top() 函数的正常逻辑。 辅助栈 B : 栈 B中存储栈 A中所有 非严格降序 的元素,则栈 A中的最小元素始终对应栈 B的栈顶元素,即 min() 函数只需返回栈

剑指 Offer 30. 包含min函数的栈-爱代码爱编程

题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 push – 在顶部加入 pop – 删除最上面的元素 min – 找出栈中最小元素 思路: 栈就像积木一样,只能在尾部/顶部进行插入和删除操作。 因为要求时间复杂度为O(1),min函数里不能用

剑指 Offer 30. 包含min函数的栈 | C++-爱代码爱编程

难度:简单 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3

剑指 offer 30. 包含min函数的栈-爱代码爱编程

剑指 Offer 30. 包含min函数的栈 - 力扣(LeetCode) 目录  运行结果 思路 代码  运行结果 思路 求一个数组的最小元素,除了用常规的排序、查找等方式之外,我们还可以用递归的思想来考虑问题:前n个数中的最小元素 = min(前n-1个数中的最小元素,第n个数)。结合栈只对栈顶元素进行操作的特点,我们可以将栈顶元

剑指offer30.包含min函数的栈_小馆长布鲁克的博客-爱代码爱编程

题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 实例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); m

剑指 offer 30. 包含min函数的栈c++(详解)_莫浅子的博客-爱代码爱编程

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); min

剑指 offer 30. 包含min函数的栈_worldmaya的博客-爱代码爱编程

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

leetcode 494.目标和 动态规划背包问题 (c++版本)_学不完了ccccc的博客-爱代码爱编程

题目描述 说白了就是让一部分数减去剩下的一部数使得差值为target,计算有多少中组合的方法 下面来个数学公式推导一下 l

刷题看力扣,刷了两个月 leetcode 算法,顺利拿下百度、阿里等大厂的 offer_java程序v的博客-爱代码爱编程

随着互联网寒潮的到来, 越来越多的互联网公司提高了面试的难度,其中之一就是加大了面试当中手撕算法题的比例。这里说的算法题不是深度学习,机器学习这类的算法,而是排序,广度优先,动态规划这类既考核数据结构也考核编程能力的题目。刷题的网址非常的多,其中以 leetcode 是最为出名的。 在刷题上,我花了大量的时间,蹚了许多的坑,总结了一下,主要有这三个问题:

代码随想录算法训练营第四十四天| leetcode518. 零钱兑换 ii、leetcode377. 组合总和 Ⅳ_喵的博客-爱代码爱编程

一、LeetCode518. 零钱兑换 II         1:题目描述(518. 零钱兑换 II)         给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。         请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。         假设每一种面额的

leetcode hot 100 —— 23.合并k个升序链表_hdu-五七小卡的博客-爱代码爱编程

题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 思路 在做本题之前,先考虑一下,如何合并两个有序链表,见 21.合并两个有序链表 最直接的思路就是,用一

算法学习 | 深度优先搜索~一条道走到黑_li_yizya的博客-爱代码爱编程

目录 员工的重要性 图像渲染  岛屿的周长  被围绕的区域 岛屿数量    深度优先搜索(Depth First Search):深度优先搜索属于图算法的一种,其过程主要是对每一个可能的分支路径深入到不能再深入到为止,而且每个节点只能访问一次。深度优先搜索本质上就是暴力搜索,遍历了所有可能的情况,必然能得到解。DFS搜索的流程是一

【leetcode】882. 细分图中的可到达节点_schanappi的博客-爱代码爱编程

题目描述 给你一个无向图(原始图),图中有 n 个节点,编号从 0 到 n - 1 。你决定将图中的每条边 细分 为一条节点链,每条边之间的新节点数各不相同。 图用由边组成的二维数组 edges 表示,其中 edg

leetcode337打家劫舍3刷题打卡_水番茄的博客-爱代码爱编程

337. 打家劫舍 III - 力扣(Leetcode) 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明

leetcode栈和队列练习-爱代码爱编程

文章目录 前言1.力扣20. 有效的括号1.题目分析 2.代码示现2.力扣225. 用队列实现栈1.题目分析2.代码实现 3.力扣232. 用栈实现队列1.题目分析2.代码实现 4.力扣622

【剑指 offer 30. 包含min函数的栈】-爱代码爱编程

package com.example.demomain.demoleetcode.easy; import java.util.Deque; import java.util.LinkedList; /** * *