剑指offer 面试30题

Posted yanmk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指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]

 

以上是关于剑指offer 面试30题的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer 面试30题

剑指offer-面试题30-包含min函数的栈-栈

剑指Offer面试题11(Java版):数值的整数次方

剑指Offer名企面试官精讲典型编程题pdf

剑指Offer名企面试官精讲典型编程题pdf

剑指Offer学习所有面试题汇总