155.最小栈
155.最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack()初始化堆栈对象。void push(int val)将元素val推入堆栈。void pop()删除堆栈顶部的元素。int top()获取堆栈顶部的元素。int getMin()获取堆栈中的最小元素。
思路
给你一个数组 nums,如何计算每个前缀的最小值?
定义 preMin[i] 表示 nums[0] 到 nums[i] 的最小值。
这可以从左到右计算:
preMin[0]=nums[0]。 preMin[1]=min(nums[0],nums[1])。 preMin[2]=min(nums[0],nums[1],nums[2])=min(preMin[1],nums[2])。 preMin[3]=min(nums[0],nums[1],nums[2],nums[3])=min(preMin[2],nums[3])。……
一般地,我们有
preMin[i]=min(preMin[i−1],nums[i])
简单来说就是用额外的空间保存前缀的最小值
1 | package com.wereash.scut_hot100; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WereAsh!
评论
ValineDisqus




