CareerCup-3.2

简介:

How would you design a stack which, in addition to push and pop, also has a function min which returns the minimum element? Push, pop and min should all operate in O(1) time.

微软实习生一面就遇到了这个问题,当时想到的是笨办法。但是面试官一点点引导,终于想出来这么做。

#include <iostream>
using namespace std;
typedef int Data;
// Creating a Linked List:
struct Node
{
    Node(Data d=0):data(d){next = NULL;};
    Data data;
    Node* next;
};

class Stack
{
public:
    Stack():top(NULL){minNode = NULL;};
    void pop()
    {
        if(top != NULL)
        {
            Node* p = top;
            top = top->next;
            delete p;
            Node* m = minNode;
            minNode = minNode->next;
            delete m;
        }
    };
    Data peek()
    {
        if(top != NULL)
        {
            return top->data;
        } else {
            throw "Empty Stack";
        }
    };
    void push(Data data)
    {
        Node* d = new Node(data);
        d->next = top;
        top = d;
        if(minNode != NULL && minNode->data < data)
            data = minNode->data;
        Node *m = new Node(data);
        m->next = minNode;
        minNode = m;
    };
    Data min()
    {
        if(minNode == NULL)
            throw "Empty Stack";
        else
            return minNode->data;
    }; 
    bool isEmpty(){return top == NULL;};
private:
    Node* top;
    Node* minNode;
};

int main()
{
    Stack stack;
    stack.push(3);
    cout<<stack.min()<<endl;
    stack.push(2);
     cout<<stack.min()<<endl;
    stack.pop();
    cout<<stack.min()<<endl;
    system("pause");
};

目录
相关文章
|
缓存 网络协议 数据安全/隐私保护
[运维笔记] - (命令).Windows server常用网络相关命令总结
[运维笔记] - (命令).Windows server常用网络相关命令总结
717 0
|
消息中间件 运维 Kafka
|
存储 算法 大数据
ZooKeeper的架构
【6月更文挑战第21天】ZooKeeper的架构
446 38
|
7月前
|
JSON API 数据安全/隐私保护
95%开发者不知道的调试黑科技:Apipost让WebSocket开发效率翻倍的秘密
在现代Web开发中,WebSocket提供全双工通信,适用于实时交互场景,如IM系统、聊天和客服系统。尽管调试工具众多,但文档设计一直是其短板。本文介绍如何使用Apipost实现WebSocket的高效调试与文档设计。Apipost不仅简化了连接建立、消息发送等调试操作,还通过分组功能优化了消息管理。其文档设计功能支持在同一endpoint下区分业务逻辑,生成清晰易维护的文档,并可一键分享。此外,文章还提供了WebSocket实战技巧,涵盖连接保持、消息格式选择、错误处理及安全性保障等内容,助力开发者提升开发效率。
|
域名解析 监控 安全
接口开放太麻烦?试试阿里云API网关吧
我在[多方合作时,系统间的交互是怎么做的?](https://www.cnblogs.com/wlovet/p/17466812.html)这篇文章中写过一些多方合作时接口的调用规则和例子,然而,接口开放所涉及的安全、权限、监控、流量控制等问题,可不是简简单单就可以解决的,这一般需要专业的开放平台来支撑。但为了开放几个接口就要做一个开放平台,实在是不合算。为此阿里云为了解决这类需求推出了一款强大的工具——API网关。本文将介绍阿里云API网关的特点和优势,以及如何使用API网关来简化接口开放的过程。
628 0
接口开放太麻烦?试试阿里云API网关吧
|
SQL 消息中间件 分布式计算
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
372 0
|
11月前
|
监控 网络协议
tcpdump 常用命令
【10月更文挑战第31天】本文介绍了工作中常用的`tcpdump`命令,通过实例展示了如何使用`tcpdump &#39;port 10000&#39; -i eth0 -S`监控TCP连接的三次握手和四次挥手过程。具体包括服务端和客户端的交互细节,以及每个步骤的详细解释。
309 11
|
监控 负载均衡 中间件
中间件中的gRPC
【6月更文挑战第4天】
181 3
|
机器学习/深度学习 计算机视觉
技术心得:卷积自编码器CAEs
技术心得:卷积自编码器CAEs
272 0
|
Java Maven
idea下载不下来maven三方库源码处理
idea下载不下来maven三方库源码处理
387 1