包含min函数的栈

基于Xilinx XDMA 的PCIE通信 基于Xilinx XDMA 的PCIE通信 概述:   想实现基于FPGA的PCIe通信,查阅互联网各种转载…基本都是对PCIe的描述,所以想写一下基于XDMA的PCIe通信的实现(PCIe结构仅做简单的描述(笔记),了解详细结构移至互联网)。实践实践!!! 说明: 参考文档: PCI Express Base Specification Revision 3.0 PCI Express Base Specification Revision 5.0 pg195-pcie-dma PCI Express体系 阅读详情

包含min函数的栈 思路及坑

题目要求

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。

题目分析

  1. 构造一个栈,栈具有先进后出的特点,且需要一个栈顶指针来指向栈的顶部
  2. 该栈需要能够返回其中最小的函数,且需要时间复杂度为O(1),因此就需要在push 和 pop操作的时候根据操作的值 记录得到一个min值,这样才能保证时间复杂度为O(1).
  3. 考虑到时间复杂度的要求及push和pop都是插入删除操作,因此可使用链表来实现栈的数据结构.

Java的LinkedList是一种常用的数据容器,与ArrayList相比,LinkedList的增删操作效率更高,而查改操作效率较低。
LinkedList 实现了List 接口,能对它进行列表操作。
LinkedList 实现了Deque 接口,能将LinkedList当作双端队列使用。
LinkedList 实现了Cloneable接口,能克隆。
LinkedList 实现了java.io.Serializable接口,这意味着LinkedList支持序列化,能通过序列化去传输。

具体的思路

具体就是使用两个LinkedList,A和 B, A用来实现栈,B用来存放该栈的一系列最小值,这个一系列最小值是怎么得来的呢?
具体来说就是,当执行push x操作的时候首先判断x是否小于等于B中的栈顶元素,若小于则push进B,否则就不push,这样当push操作执行完后,B中的栈顶元素返回的就是A的最小的元素min
在执行pop操作的时候,首先判断A中的栈顶元素是否等于B的栈顶,如果是,那么说明当前pop出去的是A的最小值,此时需要把B中的栈顶元素也pop出去。

class MinStack {
        int min = Integer.MAX_VALUE;
        int top = -1;
        int tt = -1;
        LinkedList<Integer> stack;
        LinkedList<Integer> record;
    /** initialize your data structure here. */
    public MinStack() {
        stack = new LinkedList();
        record = new LinkedList();
    }
    
    public void push(int x) {
        top++;
        stack.add(top,x);
        if(x<=min){
            tt++;
            record.add(tt,x);
            min = x;
        }
    }
    
    public void pop() {
    
        if(stack.getLast() == record.getLast()){
            record.remove(tt);
            tt--;
        }
        
        
        stack.remove(top);

        top--;

    }
    
    public int top() {
        return stack.getLast();

    }
    
    public int min() { 
        return record.getLast();

    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(x);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.min();
 */

其中LinkedList 方法的getLast() 方法定义为:
public E getLast(),返回最后一个元素,其返回的是E,在上面的代码里也就是Integer。

//输入case
["MinStack","push","push","push","min","pop","top","min"]
[[],[-2],[0],[-3],[],[],[],[]]

//我的输出
[null,null,null,null,-3,null,0,-2]
//完美符合 预期

但是在提交的时候发现通过不了,具体的case为:

//输入
["MinStack","push","push","push","push","pop","min","pop","min","pop","min"]
[[],[512],[-1024],[-1024],[512],[],[],[],[],[],[]]

//我的输出
[null,null,null,null,null,null,-1024,null,-1024,null,-1024]
//预期的输出应该为:
[null,null,null,null,null,null,-1024,null,-1024,null,512]

//看输出 应该是在最后一个pop的时候出现了问题

经过一番分析发现,和上面说的getLast方法有关系,在java中,存在着自动装箱拆箱的操作,具体可参看这个文章:
自动装箱
简单来说在值 为i < 128 && i >= -128 的时候直接返回的是已创建好的对象,而当超出这个范围的时候会创建不同的对象,因此在输入为-1024的时候 stack.getLast() == record.getLast() 是不会为true的
知道了原因之后,改起来也就很容易了,只需要拿到E的值,用这个值去判断就可以了。在JDK1.5 之后,可直接使用 int i = stack.getLast(); 自动拆箱

PLSQL Developer安装详细步骤 一、下载安装PLSQL Developer(plsql安装百度也有步骤) 官网下载地址:https://www.allroundautomations.com/registered-plsqldev/ 1、网上自己下载适合自己电脑的安装包(32或64),并解压。 2、打开解压的文件夹,得到以下三个文件(分别是汉化工具,PLSQL安装包、激活码),双击安装,如下图: 3、安装界面,点击next,进入下一步,如图: 4、安装协议界面,此处必须选择“I accept the terms in 阅读详情

相关推荐

Windows 本地安装 OpenClaw(龙虾)完整教程(纯净无广告)

《Windows系统OpenClaw本地AI网关安装指南》 本文提供Windows 10/11系统下OpenClaw(龙虾)AI网关的完整部署教程,包含: 环境配置:Node.js安装验证 核心安装:npm全局部署OpenClaw 模型对接:以DeepSeek为例配置API 扩展功能:飞书机器人集成方法 日常管理:启停命令/Web面板访问 卸载清理:完整移除服务与残留 教程涵盖初始化配置、技能管理、常见问题排查,特别说明管理员权限要求及飞书配对流程,适合新手30分钟内完成本地AI网关搭建。通过命令行操作与W

qiuxunbin_csdn的博客 638

剑指 Offer 30. 包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.min(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0.

奥古斯都 141

ros2 humble中使用realsense t265与d435

前提,安装realsense SDK 2.51.1版本并且能成功启动realsense-viewer V2.51.1想要在ros2中使用realsense t265,必须配合realsense SDK v2.51.1使用realsense-ros 4.51.1版本,因为新版本realsense ros2不再对t265支持下面记录源码编译安装 realsense-ros 4.51.1版本。

m0_72797388的博客 952

[随记]浅谈pdfobject.js实现网页PDF文件浏览

环境需要使用到pdfobject.js或者压缩后的pdfobject.min.js。示例源码<!DOCTYPE html> <html> <head> <title>网页嵌入pdf浏览器</title> <script type="text/javascript" src="./js/pdfobject.min.js"></script> <style type="text/

u010989191的博客 1万+

【RL in VLA】VLA中的强化学习

本文提出了一种名为 Reinforcement Learning Distilled Generalist(RLDG) 的方法,通过强化学习生成高质量训练数据来微调机器人基础模型。通过在多个精确操作任务上的实验,我们证明了 RLDG 在成功率和泛化能力上显著优于使用人类演示的传统微调方法。RLDG 不仅减少了对人类演示数据的依赖,还展示了在复杂多阶段任务中的灵活性和有效性。

三木今天学习了嘛の博客 2257

别再只用固定线了!聊聊Android车机‘快速倒车’与‘正常倒车’的UI与数据流核心差异(附动态轨迹线实现原理)

本文深度解析Android车机中快速倒车与正常倒车的核心差异,探讨从内核级视频流水线到动态轨迹线的技术实现。快速倒车通过内核直接操作FrameBuffer实现2秒内响应,而正常倒车则支持多传感器数据融合与动态UI元素。文章还分享了动态轨迹线的算法实现与性能优化技巧,帮助开发者打造极致的倒车体验。

weixin_42550597的博客 253

20、包含min函数的栈

题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 leetcode:155、最小栈 剑指offer:5、用两个栈实现队列 (其中包含如何用队列实现栈) 题目:用队列实现栈,并且包含min函数(下面有解答) 总结: 包含min函数的栈:重点就是用另一个栈来存储当前栈中所有元素的最小值,然后pop的时候都p...

慢慢冲鸭子的博客 226

Frigate进阶玩法:如何用MQTT和Python脚本扩展你的自定义目标检测算法

本文详细介绍了如何通过MQTT和Python脚本扩展Frigate的自定义目标检测算法,无需修改源码即可实现特殊场景(如工业设备异常、农业病虫害识别)的高效检测。文章涵盖Frigate配置、外部检测服务构建、高级集成技巧及性能优化实践,帮助开发者灵活扩展智能监控能力。

weixin_42662293的博客 348

包含min函数的栈——js

包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 思路 第一种:js数组的一些方法 第二种: 当node < stack2的最后一个值时,才push进来,那么pop的时候就需要验证stack1 pop出来的那个值是否等于stack2的最后一个值(也就是最小值) push进来时,无论如何都会push一个值进stack2...

qq_40608516的博客 304

利用ADS建立MIPI D-PHY链路仿真流程

由于MIPI D-PHY的速率并不算高,因此,PCB设计难度通常不大,主要做好差分线的等长、阻抗的连续性、端口处的阻抗优化以及控制好走线的长度,拿到满意的结果还是较为轻松的,最后,建立流程化的仿真工程文件,可以保存为模板,方便日后的设计复用,非常方便。

一只豌豆象的博客 3571

【学术情报智库】目录学的数字化蜕变:从古籍整理到AI知识图谱的跨越

我们既是浩瀚知识的守望者,也是数字智识的开拓者。目录学数字化不是技术替代传统,而是融合创新,让学术的系统性与多样性在新媒介下焕发新的生命。以AI为桥,既要智能链接,也要人文关照——这是对自我文明的深情回应,也是新知时代的庄严约定。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1420

[剑指Offer]包含min函数的栈(Java)

剑指Offer题目 包含min函数的栈 -- newcoder 剑指Offer 20 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中 所含最小元素的min函数(时间复杂度应为O(1)) 思路 * 1、使用两个栈,第一个容纳元素,第二个记录当前的最小值 * 2、第二个栈,push时,如果当前元素比栈顶元素小,则push一次当前栈顶元素, * 3、pop时,直接弹出栈顶元素即可...

聚沙成塔 374

GameFramework框架详解之 DataTable配置表模块

一.前言: DataTable模块是项目的配置表模块,配置表一般是从excel导出csv/json/xml格式的,之所以是excel作为源文件,原因是因为策划同学使用配表最方便。然后一键导出到项目中,除了csv/json/xml配置文件外,一般还会伴随着导出配置的实体类,这样研发同学就可以使用了。GameFramework的DataTable模块也是秉持着这种一贯的策略来实现的。 二.DataRow DataRow在excel数据表中,对应的是一行数据,而在代码中对应的其实就是一条数据对象。 接口IData

TxNet 4724

Java——包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 min 函数操作时,栈中一定有元素。 此栈包含的方法有: push(value):将value压入栈中 pop():弹出栈顶元素 top():获取栈顶元素 min():获取栈中最小元素 数据范围:操作数量满足 0≤n≤300 ,输入的元素满足 ∣val∣≤10000 进阶:栈的各个操作的时间复杂度是 O(1) ,空间复杂度是 O(n)

m0_60867520的博客 562

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

包含min函数的栈 java

题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 import java.util.Collections; import java.util.LinkedList; import java.util.Stack; public class Solution { private Stack<Integer&gt...

有梦的博客 306

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

牛客热题:包含min函数的栈

时间复杂度:O(1), 所有的请求均以O(1)的方式实现。​ 判断当前的值和s2的栈顶的数据比较,维护一个单调栈,用于实现常数级的min查询。空间复杂度:O(N), 使用了两个栈空间。​ 如果该值小就将其同时入栈给两个栈。,而第二个栈将自己的栈顶数据重入一遍。​ 否则,只入栈给第一个栈。​ 两个栈同时出栈即可。思路来自牛客大佬题解。

本科在读,致力于Linux/C++方向的学习,同时涉及数据结构与算法,操作系统,数据库mysql等等 818

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

剑指 30 包含min函数的栈

剑指 30 包含min函数的栈 文章目录剑指 30 包含min函数的栈原题目考查知识点自己的第一遍解法好的解法 原题目 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.min(); -->

日月既往,不可复追 248
上一篇: Android应用链接 与深层链接
皇甫O
博客等级 码龄8年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值