题目介绍定义栈的数据结构请在该类型中实现一个能够得到栈中所含最小元素的min函数时间复杂度应为O1。思路看到这题首先最理想的情况就是栈顶元素就是最小元素这样直接一次操作就可以得到栈中所含的最小元素为了实现这个目的可以利用一个辅助栈来存放当前栈中的最小值正常栈 34251 辅助栈 33221每当有新元素要入栈就与辅助栈顶元素比较大小如果新元素小就将该新元素入栈到两个栈的栈顶如果新元素比辅助栈的栈顶元素大将新元素入正常栈而将当前的辅助栈顶元素入栈到辅助栈。当出栈时辅助栈也要出栈这种做法可以保证辅助栈顶元素一定都当前正常栈的最小值# -*- coding:utf-8 -*-classSolution:def__init__(self):self.stack[]self.assist[]defpush(self,node):minself.min()ifnotself.assistornodemin:self.assist.append(node)else:self.assist.append(min)self.stack.append(node)defpop(self):ifself.stack:self.assist.pop()returnself.stack.pop()deftop(self):ifself.stack:returnself.stack[-1]defmin(self):ifself.assist:returnself.assist[-1]
剑指offer-包含min函数的栈
题目介绍定义栈的数据结构请在该类型中实现一个能够得到栈中所含最小元素的min函数时间复杂度应为O1。思路看到这题首先最理想的情况就是栈顶元素就是最小元素这样直接一次操作就可以得到栈中所含的最小元素为了实现这个目的可以利用一个辅助栈来存放当前栈中的最小值正常栈 34251 辅助栈 33221每当有新元素要入栈就与辅助栈顶元素比较大小如果新元素小就将该新元素入栈到两个栈的栈顶如果新元素比辅助栈的栈顶元素大将新元素入正常栈而将当前的辅助栈顶元素入栈到辅助栈。当出栈时辅助栈也要出栈这种做法可以保证辅助栈顶元素一定都当前正常栈的最小值# -*- coding:utf-8 -*-classSolution:def__init__(self):self.stack[]self.assist[]defpush(self,node):minself.min()ifnotself.assistornodemin:self.assist.append(node)else:self.assist.append(min)self.stack.append(node)defpop(self):ifself.stack:self.assist.pop()returnself.stack.pop()deftop(self):ifself.stack:returnself.stack[-1]defmin(self):ifself.assist:returnself.assist[-1]