不用服务器做视频网站吗,营销型的物流网站模板,有什么免费做代理的网站,东莞运营推广网站建设费用题目
设计一个支持 push #xff0c;pop #xff0c;top 操作#xff0c;并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。i…题目
设计一个支持 push pop top 操作并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。
示例
输入 [“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”] [[],[-2],[0],[-3],[],[],[],[]]
输出 [null,null,null,null,-3,null,0,-2]
解释 MinStack minStack new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); -- 返回 -3. minStack.pop(); minStack.top(); -- 返回 0. minStack.getMin(); -- 返回 -2.
解析
这道题其实不难而且官方题解的思路也比较简单就是用两个栈第一个存正常的数据第二个存的时候每次将要存的数据和第二个栈的栈顶元素相比较最后存较小的元素即可
type MinStack struct {stack []intminStack []int
}func Constructor() MinStack {return MinStack{stack: []int{},minStack: []int{math.MaxInt64},}
}func (this *MinStack) Push(x int) {this.stack append(this.stack, x)top : this.minStack[len(this.minStack)-1]this.minStack append(this.minStack, min(x, top))
}func (this *MinStack) Pop() {this.stack this.stack[:len(this.stack)-1]this.minStack this.minStack[:len(this.minStack)-1]
}func (this *MinStack) Top() int {return this.stack[len(this.stack)-1]
}func (this *MinStack) GetMin() int {return this.minStack[len(this.minStack)-1]
}