【每日一题】2022年1月3日-155. 最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/min-stack
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

 答案:

class MinStack {
    Stack<Integer> stack;
    public MinStack() {
        stack = new Stack<>();
    }
    
    public void push(int val) {
        if(stack.isEmpty()) {
            stack.push(val);
            stack.push(val);
        } else {
            int value = stack.peek();
            //stack.pop();--不能将栈顶的最小元素出栈,因为要出栈两次
            stack.push(val);
            if(value >= val) {
                stack.push(val);
            } else {
                stack.push(value);
            }
        }
    }
    
    public void pop() {
        stack.pop();
        stack.pop();
    }
    
    public int top() {
        return stack.get(stack.size() - 2);
    }
    
    public int getMin() {
        return stack.get(stack.size() - 1);
    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(val);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.getMin();
 */

 

本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/15760429.html

推荐这些文章:

2022-5-6 每日一题-leetcode

题目链接:https://leetcode-cn.com/problems/number-of-recent-calls/
个人题解:用队列来维护即可
代码:
class RecentCounter {
public:
queue<int> q;

RecentCounter() {

}

...

2022-5-4 每日一题-leetcode

题目链接:https://leetcode-cn.com/problems/find-the-winner-of-the-circular-game/
个人题解:

队列模拟(会比较慢)
数学递归,迭代节省空间(对比约瑟夫环)

点击查看代码
class Solution {
public:
int findTheWinner...

2022-5-9 每日一题-leetcode

题目链接:https://leetcode.cn/problems/di-string-match/
个人题解:贪心算法,每次把最小和最大的排在一起,用双指针来进行移动即可
代码:
class Solution {
public:
vector<int> diStringMatch(string s) {
...

【每日一题】2022年1月25日-赋乐科技-用链表实现一个栈,类似-链表实现一个栈

package com.jhliu20.real;
import java.util.LinkedList;
public class MyStack {
private LinkedList linkedList;
public MyStack() {
linkedList = new LinkedL...

【每日一题】【数栈+符号栈,考虑括号、多位数和负数】2022年2月23日-表达式求值

 
1、若是左括号 则ops存入2、若是右括号 则循环找到最近的左括号 (a & b) ,再左括号之前,若有运算符,则计算;否则(及等于左括号)移除队列最后符号3、若是运算符或者数字3.1、若是数字,则当前下标后的所有连续数字,存入nums中,最后i重新赋值到最后连续的数字下标,如i=2, 333, j++ 后 j=...

【每日一题】【判断栈是否为空的方法】2022年1月9日-NC76 用两个栈实现队列的出队入队【入队简单】

描述用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。
数据范围: n\le1000n≤1000要求:存储n个元素的空间复杂度为 O(n)O(n) ,插入与删除的时间复杂度都是 O(1)O(...

【每日一题】【栈】2022年2月2日-NC40 两个链表生成相加链表

描述

假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。
给定两个这种链表,请生成代表两个整数相加值的结果链表。

 

答案:栈

import java.util.*;

/*
* public class ListNode {
* int val;
* ListNo...

camp div1每日一题

T1题意:
求每个区间的最大值减最小值的和
思路:
预处理出每个值作为他所在的区间中的最大值和最小值的贡献,然后求和相减,使用单调栈可以处理在每个值最多可以在那个区间中作为最值;
代码:
//枚举每个值在它的区间种的贡献
#include <bits/stdc++.h>
#define int long long
int _...

155. 最小栈 (辅助栈)

 
难度简单1270

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:

MinStack() 初始化堆栈对象。
void push(int val) 将元素val推入堆...

子串的最大差(camp02-26每日一题)

#436. 子串的最大差
这道题与力扣的这一题和cf上的这一题一样。//如果原网址被ban了就用这两个。
问题
给定有n个数的数组a,求每个子串的最大值减最小值。
问题转换
假设数列\(a[n]\)一共包含m个子串segment,那么:
$最大差sum = \sum_{i=0}^m (segment[i]的最大值 - segment[i...

文章标题:【每日一题】2022年1月3日-155. 最小栈
文章链接:https://www.dianjilingqu.com/4089.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>