剑指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

posted @ 2019-02-25 15:03  大胖子球花  阅读(100)  评论(0)    收藏  举报