Leetcode 155. Min Stack JAVA语言

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
push(x) -- Push element x onto stack.
pop() -- Removes the element on top of the stack.
top() -- Get the top element.
getMin() -- Retrieve the minimum element in the stack.
 
Example:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> Returns -3.
minStack.pop();
minStack.top();      --> Returns 0.
minStack.getMin();   --> Returns -2.
 
 
Subscribe to see which companies asked this question.

题意:设计一个有MIN函数的栈。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public  class  MinStack {
     private  Stack<Integer> stackData;
     private  Stack<Integer> stackMin;
 
     /** initialize your data structure here. */
     public  MinStack() {
         stackData= new  Stack<Integer>();
         stackMin= new  Stack<Integer>();
     }
     
     public  void  push( int  x) {
         if (stackMin.isEmpty()){
             stackMin.push(x);
         } else  if (x<=stackMin.peek()){
             stackMin.push(x);
         }
         stackData.push(x);
     }
     /////这里貌似有点问题。。。。//包装类比较。。。。
     public  void  pop() {
         if (stackData.peek().equals(stackMin.peek())){
             stackMin.pop();
         }
         stackData.pop();
     }
     
     public  int  top() {
         return  stackData.peek();
     }
     
     public  int  getMin() {
         return  stackMin.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.getMin();
  */

PS:定义一个辅助栈。用于存放每一步的最小值。参见左老师的书P1。


本文转自 努力的C 51CTO博客,原文链接:http://blog.51cto.com/fulin0532/1905453


相关文章
|
2月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
80 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
4月前
|
Java Maven
使用java语言制作一个窗体(弹窗),用来收集用户输入的内容
该博客文章介绍了如何使用Java Swing中的JFrame创建一个窗体来收集用户输入的内容,并提供了详细的实现步骤和完整代码示例。
使用java语言制作一个窗体(弹窗),用来收集用户输入的内容
|
19天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
39 4
|
1月前
|
存储 算法 Java
🧠Java零基础 - Java栈(Stack)详解
【10月更文挑战第17天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
23 2
|
2月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
50 3
|
2月前
|
移动开发 Java 大数据
深入探索Java语言的核心优势与现代应用实践
【10月更文挑战第10天】深入探索Java语言的核心优势与现代应用实践
64 4
|
2月前
|
存储 Java 数据安全/隐私保护
Java中的域,什么是域?计算机语言中的域是什么?(有代码实例)
文章解释了Java中域的概念,包括实例域、静态域、常量域和局部域,以及它们的特点和使用场景。
64 2
|
2月前
|
Java 数据安全/隐私保护 C++
Java语言关键字
Java语言关键字
26 2
|
2月前
|
分布式计算 安全 Java
Java语言的特点?
Java语言的特点?
|
2月前
|
算法 Java
LeetCode(一)Java
LeetCode(一)Java