LeetCode刷题--点滴记录010
Posted 鲁棒最小二乘支持向量机
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题--点滴记录010相关的知识,希望对你有一定的参考价值。
10. 剑指 Offer 30. 包含 min 函数的栈
要求
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。
解题
C++版本
#include <iostream>
using namespace std;
#include <stack>
class MinStack
public:
stack<int> A;
stack<int> B;
MinStack()
void push(int x)
A.push(x); // 将x添加到栈A中
if (B.empty() || B.top() >= x)
B.push(x); // 将x添加到栈B中
void pop()
if (A.top() == B.top()) // 判断栈A栈顶元素是否与栈B栈顶元素相等
B.pop();// 栈B弹出栈顶元素
A.pop(); // 弹出栈A栈顶元素
int top()
return A.top(); // 返回栈A栈顶元素
int min()
return B.top(); // 返回栈B栈顶元素
;
void test01()
MinStack m;
m.push(0);
m.push(3);
m.push(-3);
cout << m.min() << endl;
m.pop();
cout << m.top() << endl;
cout << m.min() << endl;
int main()
test01();
system("pause");
return 0;
Python版本
class MinStack:
def __init__(self):
self.A = []
self.B = []
def push(self, x):
self.A.append(x) # 将x添加到栈A中
if not self.B or self.B[-1] >= x:
self.B.append(x) # 将x添加到栈B中
def pop(self):
if self.A.pop() == self.B[-1]: # 判断栈A弹出元素是否与栈B栈顶元素相等
self.B.pop() # 栈B弹出栈顶元素
def top(self):
return self.A[-1] # 返回栈A栈顶元素
def min(self):
return self.B[-1] # 返回栈B栈顶元素
def test01():
minstack = MinStack()
minstack.push(0)
minstack.push(3)
minstack.push(-3)
print(minstack.min())
minstack.pop()
print(minstack.top())
print(minstack.min())
if __name__=="__main__":
test01()
Java版本
package com.hailei_01;
import java.util.Stack;
public class minStack
public static void main(String[] args)
MinStack C = new MinStack();
C.push(0);
C.push(3);
C.push(-3);
System.out.println(C.min());
C.pop();
System.out.println(C.top());
System.out.println(C.min());
public static class MinStack
static Stack<Integer> A;
static Stack<Integer> B;
public MinStack()
A = new Stack<>();
B = new Stack<>();
public static void push(int x)
A.add(x); // 将x添加到栈A中
if(B.empty() || B.peek() >= x)
B.add(x); // 将x添加到栈B中
public static void pop()
if(A.pop().equals(B.peek())) // 判断栈A弹出元素是否与栈B栈顶元素相等
B.pop(); // 栈B弹出栈顶元素
public static int top()
return A.peek(); // 返回栈A栈顶元素
public static int min()
return B.peek(); // 返回栈B栈顶元素
希望本文对大家有帮助,上文若有不妥之处,欢迎指正
分享决定高度,学习拉开差距
以上是关于LeetCode刷题--点滴记录010的主要内容,如果未能解决你的问题,请参考以下文章