剑指offer30 包含min函数的栈
看牛客网的意思是可以用Stack。
那么先来个利用Stack的:
import java.util.Stack; public class Solution { private Stack<Integer> stack = new Stack<>(); private Stack<Integer> minStack = new Stack<>(); public void push(int node) { stack.push(node); if(minStack.empty()) minStack.push(node); else{ int currentMin = minStack.peek(); if(node<=currentMin) minStack.push(node); else minStack.push(currentMin); } } public void pop() { stack.pop(); minStack.pop(); } public int top() { return stack.peek(); } public int min() { return minStack.peek(); } }
运行时间:16ms
占用内存:9240k
# -*- coding:utf-8 -*- class Solution: def __init__(self): self.stack = [] self.mstack =[] def push(self, node): # write code here self.stack.append(node) if len(self.mstack)<1: self.mstack.append(node) else: currentMin = self.mstack[-1] if node<currentMin: self.mstack.append(node) else: self.mstack.append(currentMin) def pop(self): # write code here self.stack.pop(-1) self.mstack.pop(-1) def top(self): # write code here return self.stack[-1] def min(self): # write code here return self.mstack[-1]
运行时间:37ms
占用内存:5624k

浙公网安备 33010602011771号