zoukankan      html  css  js  c++  java
  • 剑指offer JZ-20

    题目描述

    定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
     

    思路:

    比较水的题目。

    一般而言找到栈内最小值,需要遍历栈,此时时间复杂度为O(n)

    为了达到O(1)的时间复杂度,我们可以采用空间换时间的策略:

    额外维护一个栈min_list,当push进新元素时比较新元素和min_list栈顶元素的大小,将较小的值压入min_list

    这样,min_list的栈顶总会记录着当前栈内的最小值

    class Solution {
    public:
        stack<int> list;
        stack<int> min_list;
        void push(int value) {
            if(list.size()==0)
            {
                min_list.push(value);
                list.push(value);
                return;
            }
            int temp = list.top();
            if(temp > value)
                min_list.push(value);
            else
                min_list.push(temp);
            list.push(value);
        }
        void pop() {
            list.pop();
            min_list.pop();
        }
        int top() {
            return list.top();
        }
        int min() {
            return min_list.top();
        }
    };
    View Code
     
     
  • 相关阅读:
    SpringBoot项目设置maven打包时间
    SpringBoot热部署配置
    Git笔记
    SpringBoot LogBack日志配置
    CURL使用教程
    Linux 安装Docker及使用
    转发和重定向的区别
    16周作业
    16
    15周
  • 原文地址:https://www.cnblogs.com/alan-W/p/14280183.html
Copyright © 2011-2022 走看看