当前位置: 代码迷 >> 综合 >> 力扣 剑指 Offer 30. 包含min函数的栈 简单
  详细解决方案

力扣 剑指 Offer 30. 包含min函数的栈 简单

热度:32   发布时间:2024-01-30 07:59:03.0

题目

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

示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.min();   --> 返回 -3.
minStack.pop();
minStack.top();      --> 返回 0.
minStack.min();   --> 返回 -2.

提示:各函数的调用总次数不超过 20000 次

题解

建立一个单链表,通过head来实现对栈的控制,结点增加一个min用来保存以该结点为头结点的链表中的最小值。

class MinStack {private Node head;/** initialize your data structure here. */public MinStack() {}public void push(int x) {if(head == null)head = new Node(x, x, null);elsehead = new Node(x, Math.min(x, head.min), head);}public void pop() {head = head.next;}public int top() {return head.val;}public int min() {return head.min;}private class Node{int val;int min;Node next;public Node(int val, int min, Node next){this.val = val;this.min = min;this.next = next;}}
}/*** 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();*/

 

 
  相关解决方案