美文网首页考研数据结构
使用O(1)的时间复杂度找出最小元素

使用O(1)的时间复杂度找出最小元素

作者: 飞白非白 | 来源:发表于2018-12-04 23:32 被阅读2次
// 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)
// 的时间复杂度为O(1)
// 定义两个栈分别为s1,s2。我们用s2保存最小值,s1保存原来的值

void Push(const T&x)
    {
        s1.push(x);
        if (s2.empty() || x < s2.top())
        {
            s2.push(x);
        }
        else
        {
            s2.push(s2.top());
        }
    }
    void Pop()
    {
        s1.pop();
        s2.pop();
    }
    T GetMin()
    {
        if (!s2.empty())
        {
            return s2.top();
        }
    }

相关文章

  • 使用O(1)的时间复杂度找出最小元素

  • topK

    1、找出最小的k个数输入n个数,找出其中最小的k个数 使用快速排序中的partition函数,时间复杂度为o(n)...

  • 12_基本排序算法

    冒泡排序 时间复杂度:O(n^2) 选择排序 时间复杂度:O(n(n-1)/2)找到最小的元素插入迭代的起始位置,...

  • LeetCode 力扣 41. 缺失的第一个正数

    题目描述(困难难度) 给一串数字,找出缺失的最小正数。限制了时间复杂度为 O(n),空间复杂度为 O(1)。 解法...

  • 快速在组合中查找重复和遗失的元素

    给定一个集合: 请你给出一个算法,找出A中重复的元素和缺失的元素。要求算法的空间复杂度是O(1),时间复杂度是O(...

  • python-021-用O(1)的时间复杂度求栈中最小元素

    题目:用O(1)的时间复杂度求解栈中的最小元素。 栈是一种我们经常使用的数据结构,有压栈、弹栈、取栈顶元素、判断栈...

  • 总结八

    时间复杂度 由上图,可见,O(1) 最小,O(logn) 次之,比如二分查找就是 O(logn) 时间复杂度可见 ...

  • Dict

    时间复杂度: 操作平均情况最坏情况 复制O(n)O(n) 取元素O(1)O(n) 改元素O(1)O(n) 删元素O...

  • 选择排序

    选择排序和冒泡排序类似,穷举法,时间复杂度O(n^2)。 描述: 1、记录第一个元素作为最小元素2、和后面的元素比...

  • java8 ArrayList 源码解析

    ArrayList是经常使用的集合类,底层基于数组实现,访问元素的时间复杂度是O(1),但是增删元素的时间复杂...

网友评论

    本文标题:使用O(1)的时间复杂度找出最小元素

    本文链接:https://www.haomeiwen.com/subject/etubcqtx.html