[Lintcode]12. Min Stack /[Leetcode]155. Min Stack

12. Min Stack / 155. Min Stack

  • 本题难度: Medium/Easy
  • Topic: Data Structure

Description

import heapq
import collections
class MinStack:

def __init__(self):
    """
    initialize your data structure here.
    """
    self.stack = []

def push(self, x: 'int') -> 'None':
    if len(self.stack) == 0:
        self.stack.append((x,x))
        return
    if self.stack[-1][1]<x:
        self.stack.append((x,self.stack[-1][1]))
    else:
        self.stack.append((x,x))
    return 

def pop(self) -> 'None':
    return self.stack.pop()[0]
    
    

def top(self) -> 'int':
    return self.stack[-1][0]
    

def getMin(self) -> 'int':
    return self.stack[-1][1]

Your MinStack object will be instantiated and called as such:

obj = MinStack()

obj.push(x)

obj.pop()

param_3 = obj.top()

param_4 = obj.getMin()

我的代码

import heapq
import collections
class MinStack:

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.stack = []

    def push(self, x: 'int') -> 'None':
        if len(self.stack) == 0:
            self.stack.append((x,x))
            return
        if self.stack[-1][1]<x:
            self.stack.append((x,self.stack[-1][1]))
        else:
            self.stack.append((x,x))
        return 

    def pop(self) -> 'None':
        return self.stack.pop()[0]
        
        

    def top(self) -> 'int':
        return self.stack[-1][0]
        

    def getMin(self) -> 'int':
        return self.stack[-1][1]
        


# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()

别人的代码


思路
参考了Leetcode Discussion代码。
getmin只需要get就好了,不需要弹出,所以并不需要heap来改变结构。

  • 时间复杂度 O(n)
posted @ 2019-02-17 21:20  siriusli  阅读(87)  评论(0编辑  收藏  举报