2024/4/2—力扣—栈的最小值

代码实现:

typedef struct node {
    int val;
    struct node *next;
} Node;

typedef struct {
    struct node *top;
    int min;
} MinStack;

/** initialize your data structure here. */

MinStack* minStackCreate() {
    MinStack *obj = malloc(sizeof(*obj));
    obj->top = NULL;
    obj->min = INT_MAX;
    return obj;
}

void minStackPush(MinStack *obj, int x) {
    Node *p = malloc(sizeof(*p));
    p->val = x;
    p->next = NULL;
    obj->min = obj->min > x ? x : obj->min;
    if (obj->top == NULL) {
        obj->top = p;
    } else {
        p->next = obj->top;
        obj->top = p;
    }
}

void minStackPop(MinStack *obj) {
    Node *pc = obj->top;
    obj->top = obj->top->next;
    if (obj->top == NULL) {
        obj->min = INT_MAX;
    } else if (pc->val == obj->min) {
        Node *p = obj->top;
        int fmin = p->val;
        while (p) {
            if (fmin > p->val) {
                fmin = p->val;
            }
            p = p->next;
        }
        obj->min = fmin; 
    }
    pc->next = NULL;
    free(pc);
}

int minStackTop(MinStack *obj) {
    return obj->top->val;
}

int minStackGetMin(MinStack *obj) {
    return obj->min;
}

void minStackFree(MinStack *obj) {
    Node *pc = obj->top;
    while (pc) {
        obj->top = obj->top->next;
        pc->next = NULL;
        free(pc);
        pc = obj->top;
    }
    free(obj);
}

/**
 * Your MinStack struct will be instantiated and called as such:
 * MinStack* obj = minStackCreate();
 * minStackPush(obj, x);
 
 * minStackPop(obj);
 
 * int param_3 = minStackTop(obj);
 
 * int param_4 = minStackGetMin(obj);
 
 * minStackFree(obj);
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/537615.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Failure Unable to retrieve image details-解决Portainer与Docker v26不兼容问题

文章目录 前言解决过程解决方法一解决方法二 前言 今天登上服务器习惯性的升级了yum软件包,结果这一更新后导致Portainer不能正常使用,后续进行成功解决,简单记录一下 解决过程 事故过程模拟 当时顺手升级下docker版本(V26.0.1) 结果Porta…

Golang 状态机设计模式

本文介绍了Golang状态机模式的一个实现示例,通过该模式,可以解耦调用链,有助于实现测试友好的代码,提高代码质量。原文: Go State Machine Patterns 导言 在我们开发的许多项目中,都需要依赖某种运行状态从而实现连续操…

LeetCode-62. 不同路径【数学 动态规划 组合数学】

LeetCode-62. 不同路径【数学 动态规划 组合数学】 题目描述:解题思路一:动态规划,动规五部曲解题思路二:动态规划(版本二)解题思路三:数论 题目描述: 一个机器人位于一个 m x n 网…

麦肯锡问题分析七步法

麦肯锡七步分析法又称“七步分析法”是麦肯锡公司根据他们做过的大量案例,总结出的一套对商业机遇的分析方法。它是一种在实际运用中,对新创公司及成熟公司都很重要的思维、工作方法。麦肯锡问题分析7步法为企业提供了一个结构化的问题解决框架&#xff…

分类算法(数据挖掘)

目录 1. 逻辑回归(Logistic Regression) 2. 支持向量机(Support Vector Machine, SVM) 3. 决策树(Decision Tree) 4. 随机森林(Random Forest) 5. K近邻(K-Nearest …

Mongodb入门--头歌实验MongoDB 复制集 分片

一、MongoDB之副本集配置 1.1MongoDB主从复制 主从复制是MongoDB最早使用的复制方式, 该复制方式易于配置,并且可以支持任意数量的从节点服务器,与使用单节点模式相比有如下优点: 在从服务器上存储数据副本,提高了数…

【已解决】VMware Horizon Client: 无法建立安全加密链路连接

文章目录 问题原因解决方法方法1:在HTTPS拦截中添加VMware忽略列表 (推荐)方法2: 只拦截 浏览器进程的请求 / 取消 HTTPS 拦截(如果没有拦截HTTPS的必要 / 只针对浏览器请求,可以使用此方法) 当前使用mac 编辑&#xf…

淘宝扭蛋机小程序:扭出惊喜,乐享购物新体验

在快节奏的现代生活中,人们总是在寻找新鲜、有趣的娱乐方式。淘宝扭蛋机小程序应运而生,为您带来前所未有的购物与娱乐结合新体验。在这里,每一次的扭动都充满惊喜,每一次的点击都带来乐趣,让您在购物的同时&#xff0…

OpenResty,Nginx实现接口验签与黑名单控制

介绍 nginx与openresty是两种优秀知名的7层负载均衡软件,nginx以其出色的性能和稳定性成为首选,而openresty则是在Nginx基础上构建的,支持嵌入Lua语言,大幅提升了开发效率。 安装OpenResty 版本 openresty-1.25.3.1-win64下载地…

D. Solve The Maze Codeforces Round 648 (Div. 2)

题目链接: Problem - 1365D - CodeforcesCodeforces. Programming competitions and contests, programming communityhttps://codeforces.com/problemset/problem/1365/D 题目大意: 有一张地图n行m列(地图外面全是墙)&#xff0c…

阿里云服务器配置选择详细指导

云服务器配置如何选择?云服务器配置包括CPU内存、公网带宽和系统盘,阿里云服务器还要注意云服务器规格及轻量应用服务器的选择,云服务器吧以阿里云服务器为例来详细说下小白用户选择云服务器配置攻略: 一、准备工作 如果你不注册…

文献速递:深度学习肝脏肿瘤诊断---基于多相增强 CT 和临床数据的恶性肝肿瘤鉴别诊断深度学习

Title 题目 Deep learning for diferential diagnosisof malignant hepatic tumors based on multi-phase contrast-enhanced CT and clinical data 基于多相增强 CT 和临床数据的恶性肝肿瘤鉴别诊断深度学习 Abstract 摘要 Liver cancer remains the leading cause of can…

2024 年 AI代码助手AI Coding Assistant智能工具

AI代码助手(AI Coding Assistant)是一种利用人工智能帮助开发人员更快、更准确地编写代码的软件工具。 它可以通过根据提示生成代码或在你实时编写代码时建议自动完成代码来实现此目的。 以下是AI代码助手可以做的一些事情: 与你使用的流行代…

指令集体系简读

这一部分,采用问答的方式来进行梳理; 什么是指令集体系? 指令集体系(Instruction Set Architecture,ISA)是规定处理器的外在行为的一系列内容的统称,它包括: 基本数据类型(data types)、指令(instructions)、寄存器…

Socks5代理IP如何使用?详细教程解析

当我们在互联网上浏览网页、下载文件或者进行在线活动时,隐私和安全问题常常被提及。在这样的环境下,一个有效的解决方案是使用Sock5IP。本教程将向您介绍Sock5IP的使用方法,帮助您保护个人隐私并提升网络安全。 一、什么是Sock5IP&#xff1…

使用了代理IP怎么还会被封?代理IP到底有没有效果?

代理IP作为一种网络工具,被广泛应用于各种场景,例如网络爬虫、海外购物、规避地区限制等。然而,很多用户在使用代理IP的过程中却发现自己的账号被封禁,这让他们不禁产生疑问:使用了代理IP怎么还会被封?代理…

MXNet安装:专业指南与深度解析

一、引言 MXNet是一个高效且灵活的深度学习框架,它支持多种编程语言和平台,并提供了丰富的深度学习算法和工具。随着深度学习技术的广泛应用,MXNet因其出色的性能和易用性受到了越来越多开发者和研究人员的青睐。本文将详细介绍MXNet的安装过…

YOLOV5 分类:利用yolov5进行图像分类

1、前言 之前介绍了yolov5的目标检测示例,这次将介绍yolov5的分类展示 目标检测:YOLOv5 项目:训练代码和参数详细介绍(train)_yolov5训练代码的详解-CSDN博客 yolov5和其他网络的性能对比 yolov5分类的代码部分在这 2、数据集准备 yolov5分类的数据集就是常规的摆放方式…

SpringCloudAlibabaSeate处理分布式事务

SpringCloudAlibabaSeate处理分布式事务 1、部分面试题 微服务boot/cloud做的项目,你不可能只有一个数据库吧?那么多个数据库之间如何处理分布式事务的? 一个场景:在订单支付成功后,交易中心会调用订单中心的服务把订…

如何在公网环境远程管理内网Windows系统部署的MongoDB数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…