剑指offer 包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

/**
 * 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
 */
package offer.StackMin;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

public class Solution {
    Stack<Integer> stack=new Stack();
    List<Integer> list=new ArrayList<Integer>();
    public void push(int node) {
        stack.push(node);
        if(list.size()!=0){
            int min = (int) list.get(list.size()-1);
            if(min<node){
                list.add(min);
            }else{
                list.add(node);
            }
        }else{
            list.add(node);
        }
    }
    public void pop() {
        stack.pop();
        list.remove(list.size()-1);
    }

    public int top() {
        return stack.peek();
    }

    public int min() {
        return list.get(list.size()-1);
    }

    public static void main(String[] args) {
        Solution solution=new Solution();
        solution.push(2);
        solution.push(3);
        int min = solution.min();
        System.out.print(min);
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LeetCode

LeetCode 830.Position of Large Group

总结:本题属于双指针的问题,一个标记重复字符串的左,一个标记右,从字符串的头部滑动到尾部,遇到满足一部要求的解后,加入res。

430
来自专栏皮皮之路

【JDK1.8】JDK1.8集合源码阅读——LinkedList

1413
来自专栏开发之途

Java集合框架源码解析之LinkedList

1263
来自专栏奔跑的蛙牛技术博客

集合(2)

我们知道数组和ArrayList有一个重大缺陷。这个缺陷就从数组的中间位置删除一个元素需要付出重大的代价,因为从数组中间删除一个元素,元素中间的位置都需要向前移...

742
来自专栏Android机动车

数据结构学习笔记——线性表(上)

线性表元素的个数n(n≥0)定义为线性表的长度,当n=0时,称为空表。在非空表中的每个元素都有一个确定的位置,如a1是第一个元素,an是最后一个元素,ai是第i...

602
来自专栏wannshan(javaer,RPC)

JDK PriorityBlockingQueue remove(Object o) 源码分析

先知道PriorityBlockingQueue 是利用数组存储二叉堆实现。最小值(最优先)放在queue[0]位置。 //删除某个元素 public bool...

3587
来自专栏工科狗和生物喵

【计算机本科补全计划】Java学习笔记(九) Java日期时间

### 1、 Java 日期时间 java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。第一...

912
来自专栏nnngu

算法06 五大查找之:二分查找

二分查找属于顺序表查找,二分查找也称为折半查找。二分查找的时间复杂度为O(log2n)   1、二分查找的定义 什么是二分查找呢?二分查找的基本思想是:在有序表...

3418
来自专栏开发之途

Java集合框架源码解析之LinkedHashMap

1193
来自专栏好好学java的技术栈

”365算法每日学计划”:02打卡-线性表(赠书活动第①期预告)

1283

扫码关注云+社区