Leetcode 热题100-155 最小栈

1. 题目描述

155 最小栈

2. 解题思路

方法一:创建一个辅助栈min_stk用以存储当前元素相对应的栈中最小元素值;
方式二:类似于方法一,使用pair<int,int>同时存储当前元素与其对应的栈中最小元素值。

3. 代码实现(方法二)

class MinStack {
    // 存储与每个元素以及相对应的栈中的最小值
    stack<pair<int,int>> stk;
public:
    MinStack() {
        // 初始化堆栈对象
        stk.push({INT_MAX, INT_MAX});
    }

    void push(int val) { stk.push({val, min(val, stk.top().second)}); }

    void pop() { stk.pop(); }

    int top() { return stk.top().first; }

    int getMin() { return stk.top().second; }
};

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack* obj = new MinStack();
 * obj->push(val);
 * obj->pop();
 * int param_3 = obj->top();
 * int param_4 = obj->getMin();
 */

4. c++知识点

std::pair 是一个简单的容器类模板,用于存储两个相关联的对象。它的主要用途是将两个值组合在一起,形成一个单独的实体。以下是 std::pair 的主要用法:

用法

  1. 创建和初始化:
    • 可以直接创建并初始化一个 std::pair 对象。
    • 可以使用 std::make_pair 函数来创建一个 std::pair 对象。
  std::pair<int, std::string> p1(1, "example");
  auto p2 = std::make_pair(2, "example2");
  1. 访问元素与修改元素:
    • 通过成员变量 firstsecond 来访问 std::pair 的两个元素。
    • 可以直接修改 firstsecond 的值。
  int num = p1.first;     // 访问第一个元素
  std::string str = p1.second; // 访问第二个元素

  p1.first = 10;          // 修改第一个元素
  p1.second = "ten";      // 修改第二个元素
  1. 比较:
    • std::pair 支持按字典顺序进行比较(先比较 first 元素,如果 first 相等,再比较 second 元素)。
    • 提供了 ==, !=, <, <=, >, >= 等比较操作符。
if (p1 < p2) {
    // 按字典顺序比较
}
  1. 使用场景:
    • 返回多个值:函数返回一对相关的值时,可以使用 std::pair
    • 容器中的元素:在 std::mapstd::unordered_map 等关联容器中,键值对存储为 std::pair
    • 暂时组合两个值:在算法中临时组合两个相关的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值