Google 面试题:带最小值操作的栈

zzzrf:实现一个栈, 支持以下操作:

  • push(val) 将 val 压入栈
  • pop() 将栈顶元素弹出, 并返回这个弹出的元素
  • min() 返回栈中元素的最小值
    要求 O(1) 开销.

在线评测地址

样例:

输入: 
  push(1)
  min()
  push(2)
  min()
  push(3)
  min()
输出: 
  1
  1
  1

算法:最小栈

思路:

  • 要求 O(1)时间内完成所有操作,压入栈弹和出栈顶元素并返回本来就是 O(1)没有问题,要返回栈中元素最小值也是 O(1)就需要一个辅助栈。
  • 在压入新元素时,如果辅助栈为空或者辅助栈顶元素大于新元素,那么新元素就是目前最小值,压入新元素;如果辅助栈顶元素小于新元素,那么再次压入栈顶元素。
  • 在弹出元素时,辅助栈跟着一起弹出栈顶元素。
  • 这样就满足了辅助栈内存储的最小值与存储数据的栈同步,查询最小值的操作是 O(1)的。

复杂度:

  • 空间复杂度取决于输入的数据
  • 时间复杂度 O(1)
public class MinStack {

    Stack<Integer> stack, minStack;

    public MinStack() {
        stack = new Stack<Integer>();
        minStack = new Stack<Integer>();
    }

    /*
     * @param number: An integer
     * @return: nothing
     */
    public void push(int number) {
        stack.push(number);
        if (minStack.empty() || number < minStack.peek()) {
            minStack.push(number);
        } else {
            minStack.push(minStack.peek());
        }
    }

    /*
     * @return: An integer
     */
    public int pop() {
        minStack.pop();
        return stack.pop();
    }

    /*
     * @return: An integer
     */
    public int min() {
        return minStack.peek();
    }
}
Google 验证器出现的数字是预先有的?

CSGO:我发现我经常登录一些账号,好像经常就那么几组数字,都能背了,这是巧合还是记忆错乱? 或则它是有多少组固定的数字? 那么类似 Steam 的手机令牌中也是一样的原理吗?lycc:https://zh.m.wikipedia.org/zh-cn/Google%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E5%99%A8了解一…

Google 的磁悬浮负载均衡器

holinhot:https://research.google/pubs/pub44824/ 想试一试这个磁悬浮负载均衡器, 文档我看了,说得很牛逼的样子,但是我找了很久没找到在哪下载啊。 难道不是开源的,只是出来水一下让大家看吗?holinhot:https://opensource.google/projects/list/featured 在这也没找…

Google Play 购买游戏安装后卸载会触发自动退款?

Gitch:一脸懵 b,20 点 39 分购买了个游戏,然后安装下来,玩到 51 分左右,删了,然后 Google play 突然同时给我发了邮件说已同意您的退款申请??(我并没有申请 这么人性化的吗?想了解具体规则......多少时间内主动卸载游戏会触发这种自动退款效果? 游戏是几何冲刺,1.99 刀。

国内安卓如何使用 Google 暴露通知

dingwen07:通信行程卡 app 首页写明了使用了 Google 的暴露通知,但是在 Google 设置里的 COVID 暴露通知内没有发现通信行程卡 app,是要从特定渠道下载吗?XsterreX:哈?不懂……楼下来解答吧! vk42:通信行程卡不知道是啥,查了下好像是国内的 app ?那为啥会用 Google 的暴露通知呢?目前用了这个服务的都是美…

一个 Google Drive 搜索引擎

xinyana:https://zhao.pp.ua 一个基于ElasticSearch的 Google Drive 搜索引擎,可搜索、可直接下载