zoukankan      html  css  js  c++  java
  • 剑指offer 面试30题

    面试30题:

    题目:包含min函数的栈

    题:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。在该栈中,调用min、push、pop的时间复杂度都是O(1)

    解题思路:1)如果每次压入新元素时,再调整让新元素位于栈顶,这种思路不能保证最后压入栈的元素最先出栈,因此这个数据结构已经不是栈了。X

                   2)如果在栈中添加一个成员变量存放最小元素,那么当最小元素弹出后,就不知道下一个最小元素在哪儿了。因此,必须将次小元素保存。X

         3)把每次的最小元素保存起来放在另一个辅助栈里。 √

    解题代码:

    # -*- coding:utf-8 -*-
    class Solution:
        def __init__(self):
            self.stack=[]
            self.minstack=[]
        
        def push(self, node):
            # write code here
            self.stack.append(node)
            if self.minstack==[] or node<self.min():
                self.minstack.append(node)
            else:
                self.minstack.append(self.min())
            
        def pop(self):
            # write code here
            if self.stack==[] or self.minstack==[]:
                return None
            self.stack.pop()
            self.minstack.pop()
            
        def top(self):
            # write code here
            return self.stack[-1]
        def min(self):
            # write code here
            return self.minstack[-1]
  • 相关阅读:
    SQL SERVER 运维日记
    openstack
    Java GC 日志详解
    突破 BTrace 安全限制
    End-to-End Tracing of Ajax/Java Applications Using DTrace
    调试工具BTrace 的使用--例子
    btrace-dtrace-for-java-ish
    DTrace Probes in HotSpot VM
    DTrace memory leak 内存泄露
    Java-JVM-GC
  • 原文地址:https://www.cnblogs.com/yanmk/p/9217417.html
Copyright © 2011-2022 走看看