题解 | #包含min函数的栈#

包含min函数的栈

https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

这题要求各个操作的时间复杂度都要是常数,那就意味着min这个求最小值过程不能用遍历。(不过看题目中给的数据范围,遍历应该也过得了。)那就只能采用以空间换时间的策略了,设置一个整数数组,第i个位置记录从栈底到第i个栈位置的区间的最小值(从0开始),push和pop操作都更新以栈顶位置为区间边界的区间最小值(这里偷懒并没有在pop操作里也更新)。这就是一个最简单的动态规划。其优势就是能立刻返回栈中元素的最小值,劣势也是显而易见的,即更大的空间开销。

class Solution {
  public:
    ListNode* stack;
    int min_val = (1 << 31) - 1;
    int rec_min[300]; //动态规划记录区间最小值
    int len = 0;
    void push(int value) {
        if (!stack) {
            stack = new ListNode(value);
        } else {
            ListNode* tmp = new ListNode(value);
            tmp->next = stack;
            stack = tmp;
        }
        if (!len) {
            rec_min[0] = (stack->val < min_val) ? stack->val : min_val;
        } else {
            rec_min[len] = (stack->val < rec_min[len - 1]) ? stack->val : rec_min[len - 1];
        }
        len++;

    }
    void pop() {
        if (len) {
            ListNode* tmp = stack->next;
            delete stack;
            stack = tmp;
            len--;
        }
    }
    int top() {
        if (len) {
            return stack->val;
        }
        return NULL;
    }
    int min() {
        return rec_min[len - 1];
    }
};

全部评论

相关推荐

就前几天旅游的时候,打开抖音就经常刷到这类视频:以前是高学历学生、老师、主持人,现在做着团播、擦边主播的工作,以及那些经过精心包装的“职业转型”故事——从铺天盖地的VLOG到所谓的“04年夜场工作日记”,这些内容在初中升学、高考放榜等关键时间节点持续发酵。可以说非常直接且精准地在潜移默化地影响着心智尚未成熟的青少年,使其对特殊行业逐渐脱敏。那我就想问了:某些传播公司、平台运营者甚至某些夜场的老板,你们究竟在传递怎样的价值观?点开那些视频,评论区里也是呈现明显的两极分化:一种是​​经济下行论​​:“现在就业市场已经艰难到这种程度了吗?”​​一种是事实反驳派​​:这些创作者往往拥有名校背景,从事着...
牛客刘北:被环境教育的,为了能拿到足够的钱养活自己,不甘心也得甘心,现在的短视频传播的思想的确很扭曲,但是很明显,互联网玩上一年你就能全款提A6,但你全心全意不吃不喝工作一年未必能提A6,但是在高考中考出现这个的确很扭曲,在向大家传播“不上学,玩互联网也可以轻松年入百万”,不是人变了,是社会在变
预测一下26届秋招形势
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务