当前位置: 首页 > news >正文

算法跟练第十弹——栈与队列

文章目录

  • part01 逆波兰表达式求值
  • part02 滑动窗口最大值
  • part03 前 K 个高频元素
  • 归纳:
    • 将字符串转转换成整数:
    • LinkedList
    • Map遍历
    • 优先级队列的比较器

跟着代码随想录刷题的第十天。

代码随想录链接:代码随想录

part01 逆波兰表达式求值

题目链接:150. 逆波兰表达式求值

代码:

class Solution {public int evalRPN(String[] tokens) {Stack<Integer> stack = new Stack<>();int num;int a;int b;for(String i:tokens){if(isInt(i)){num = Integer.parseInt(i);stack.push(num);}else{b = stack.pop();a = stack.pop();int result = cal(i,a,b);stack.push(result);}}return stack.pop();}public boolean isInt(String s){//用正则表达式String b = "^-?\\d+$";return s.matches(b);}public int cal(String s,int a,int b){int result;switch(s){case "+":result = a+b;break;case "-":result = a-b;break;case "*":result = a*b;break;default:result = a/b;}return result;}
}

题解:只要遇到符号,就弹出前两个数并且进行运算,再把运算的结果存进去

代码随想录的解法:

class Solution {public int evalRPN(String[] tokens) {Deque<Integer> stack = new LinkedList();for (String s : tokens) {if ("+".equals(s)) {        // leetcode 内置jdk的问题,不能使用==判断字符串是否相等stack.push(stack.pop() + stack.pop());      // 注意 - 和/ 需要特殊处理} else if ("-".equals(s)) {stack.push(-stack.pop() + stack.pop());} else if ("*".equals(s)) {stack.push(stack.pop() * stack.pop());} else if ("/".equals(s)) {int temp1 = stack.pop();int temp2 = stack.pop();stack.push(temp2 / temp1);} else {stack.push(Integer.valueOf(s));}}return stack.pop();}
}

对比了一下,我多了判断字符串数组里面的数是不是整数的步骤

part02 滑动窗口最大值

题目链接:239. 滑动窗口最大值

代码:

class MyQueue{Deque<Integer> queue = new LinkedList<>();public void poll(int val){if(!queue.isEmpty()&&val==queue.peek()){queue.poll();}}public void add(int val){while(!queue.isEmpty()&&val>queue.getLast()){queue.removeLast();}queue.add(val);}public int peek(){return queue.peek();}
}class Solution {public int[] maxSlidingWindow(int[] nums, int k) {if(nums.length==1)return nums;MyQueue queue = new MyQueue();int len = nums.length-k+1;int[] result = new int[len];int cnt = 0;for(int i = 0;i<k;i++){queue.add(nums[i]);}result[cnt++] = queue.peek();for(int i = k;i<nums.length;i++){queue.poll(nums[i-k]);queue.add(nums[i]);result[cnt++] = queue.peek();}return result;}
}

题解:本题是自定义了一个单调队列,只在队列中保留可能成为最大值的数值。当一个数值进入到队列中时,若是前面所有值都比它小,就全部弹出。

part03 前 K 个高频元素

题目链接:347.前 K 个高频元素

代码:

class Solution {public int[] topKFrequent(int[] nums, int k) {Map<Integer,Integer> map = new HashMap<>();for(int n:nums){map.put(n,map.getOrDefault(n,0)+1);}PriorityQueue<int[]> que = new PriorityQueue<>((pair1,pair2)->pair1[1]-pair2[1]);for(Map.Entry<Integer, Integer> entry : map.entrySet()){if(que.size()<k){que.add(new int[]{entry.getKey(),entry.getValue()});}if(que.size()<k){que.poll();que.add(new int[]{entry.getKey(),entry.getValue()});}}int[] ans = new int[k];for(int i= k-1;i>=0;i--){ans[i] = que.poll()[0];}return ans;}
}

题解:先用HashMap将元素和出现频率存储起来,再用小根堆将出现频率按顺序保留,最后输出。

归纳:

将字符串转转换成整数:

int num = Integer.parseInt(i);

LinkedList

  • 获取链表最后一个元素
a.getLast();
  • 移除链表最后一个元素
a.moveLast();

Map遍历

Map.Entry<Integer, Integer> entry : map.entrySet()

优先级队列的比较器

new PriorityQueue<>((pair1, pair2) -> pair1[1] - pair2[1])

这里使用了 PriorityQueue 的构造函数,并传入了一个 Lambda 表达式 作为比较器(Comparator)。

比较器的作用是定义队列中元素的优先级规则。

Lambda 表达式 (pair1, pair2) -> pair1[1] - pair2[1]
pair1 和 pair2 是两个 int[] 类型的元素(即两个整数数组)。

pair1[1] 和 pair2[1] 分别表示这两个数组的第二个元素(索引为 1 的元素)。

pair1[1] - pair2[1] 是一个比较逻辑:

  • 如果 pair1[1] < pair2[1],结果为负数,表示 pair1 的优先级高于 pair2。

  • 如果 pair1[1] == pair2[1],结果为 0,表示两者优先级相同。

  • 如果 pair1[1] > pair2[1],结果为正数,表示 pair1 的优先级低于 pair2。

相关文章:

算法跟练第十弹——栈与队列

文章目录 part01 逆波兰表达式求值part02 滑动窗口最大值part03 前 K 个高频元素归纳&#xff1a;将字符串转转换成整数&#xff1a;LinkedListMap遍历优先级队列的比较器 跟着代码随想录刷题的第十天。 代码随想录链接&#xff1a;代码随想录 part01 逆波兰表达式求值 题目链接…...

计算机毕业设计——Springboot的校园新闻网站

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…...

在CT107D单片机综合训练平台上实现外部中断控制LED闪烁

引言 在单片机开发中&#xff0c;外部中断是一个非常重要的功能&#xff0c;它可以让单片机在检测到外部信号变化时立即做出响应。本文将详细介绍如何在CT107D单片机综合训练平台上使用外部中断来控制LED灯的闪烁。我们将使用两种不同的方式来实现这一功能&#xff1a;一种是在…...

C# ASP.NET 介绍

.NET学习资料 .NET学习资料 .NET学习资料 一、概述 ASP.NET是由微软创建的一个开源 Web 框架&#xff0c;用于使用.NET 构建现代化的 Web 应用程序和服务。它为开发者提供了一套丰富的工具、库和编程模型&#xff0c;使得创建功能强大、高效且安全的 Web 应用变得更加容易。…...

Django中select_related 的作用

Django中这句代码Dynamic.objects.select_related(song)是什么意思&#xff1f; 在 Django 中&#xff0c;这句代码&#xff1a; Dynamic.objects.select_related(song) 的作用是 在查询 Dynamic 模型的同时&#xff0c;预加载 song 关联的外键对象&#xff0c;从而减少数据…...

MyBatis常见知识点

#{} 和 ${} 的区别是什么&#xff1f; 答&#xff1a; ${}是 Properties 文件中的变量占位符&#xff0c;它可以用于标签属性值和 sql 内部&#xff0c;属于原样文本替换&#xff0c;可以替换任意内容&#xff0c;比如${driver}会被原样替换为com.mysql.jdbc. Driver。 一个…...

CentOS 安装 Docker

一、使用官方安装脚本自动安装 安装命令如下&#xff1a; curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 也可以使用国内 daocloud 一键安装命令&#xff1a; curl -sSL https://get.daocloud.io/docker | sh 二、手动安装 卸载旧版本 较旧的 Do…...

【sqlite】python操作sqlite3(含测试)

个人小项目或者小团队&#xff0c;sqllite很适用&#xff0c;数据库封装操作如下 #!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2025-02-08 13:57 # Author : duxiaowei # File : connect_sqllite.py # Software: PyCharm """ sqllite操作, …...

PTC Windchill介绍

以下内容摘自PTC的Windchill介绍材料&#xff0c;确有其用&#xff0c;摘录一些&#xff1a; 存储和搜索产品信息 所有产品信息的中央存储库。同样的&#xff0c;对于产品相关内容&#xff0c;例如 CAD 模型、文档、技术插图、嵌入式软件、计算和要求规范&#xff0c;都有一个…...

3.矩阵分解技术在推荐系统中的应用

接下来我们将深入探讨矩阵分解技术在推荐系统中的应用。矩阵分解是一种强大的技术&#xff0c;可以有效地处理数据稀疏性问题&#xff0c;并提高推荐系统的性能。在这一课中&#xff0c;我们将介绍以下内容&#xff1a; 矩阵分解的基本概念奇异值分解&#xff08;SVD&#xff…...

visual studio 在kylin v10上跨平台编译时c++标准库提示缺少无法打开的问题解决

情况1&#xff1a;提示无法打开 源文件 "string"之类导致无法编译 情况2:能编译&#xff0c;但无法打开这些库文件或标准库使用提示下划红色问题 解决方案&#xff1a; 一、通过工具->选项->跨平台里&#xff0c;在“远程标头IntelliSense管理器”更新下载一下…...

TextWebSocketHandler 和 @ServerEndpoint 各自实现 WebSocket 服务器

TextWebSocketHandler 和 ServerEndpoint 都可以用于实现 WebSocket 服务器&#xff0c;但它们属于不同的技术栈&#xff0c;使用方式和功能有一些区别。以下是它们的对比&#xff1a; 1. 技术栈对比 特性TextWebSocketHandler (Spring)ServerEndpoint (Java EE/JSR-356)所属框…...

一种非完全图下的TSP求解算法

序 旅行商问题(Traveling Salesman Problem,简称TSP)是组合优化中的一个经典问题,就是给定一组城市和城市之间的距离,找到一条最短路径使得每个城市只被访问一次后返回到起点。 一些传统的解法都是基于完全图的,我在网上也很少找到非完全图的解法,非完全图应该在实际应…...

文件操作(1.文件资源上传到MinIO 2.文件资源保存在数据库中)

目录 本文提供文件操作接口的实现(上传下载) 附件资源表实体类 具体代码实现 上传到MinIO服务器 pom依赖 yml配置 MinIO配置 服务实现类 保存到数据库 本文提供文件操作接口的实现(上传下载) 附件资源表实体类 Data AllArgsConstructor NoArgsConstructor EqualsAndHa…...

deepseek模型技术优势研究

1.1 混合专家模型&#xff08;MoE&#xff09;架构 DeepSeek 模型采用了混合专家模型&#xff08;Mixture-of-Experts&#xff0c;MoE&#xff09;架构&#xff0c;这一架构在大规模预训练与下游应用中展现了显著的计算资源利用效率优势。MoE 架构的基本思想是在传统 Transfor…...

项目6:基于大数据校园一卡通数据分析和可视化

1、项目简介 本项目是基于大数据的清华校园卡数据分析系统&#xff0c;通过Hadoop&#xff0c;spark等技术处理校园卡交易、卡号和商户信息数据。系统实现消费类别、男女消费差异、学院消费排行和年级对比等分析&#xff0c;并通过Web后端和可视化前端展示结果。项目运行便捷&…...

搭建Spark集群(CentOS Stream 9)

零、资源准备 虚拟机相关: VMware workstation 16:虚拟机/vmware_16.zip(建议选择vmware_17版本)CentOS Stream 9:虚拟机/CentOS-Stream-9-latest-x86_64-boot.iso(安装包小,安装时需要联网下载)/ 虚拟机/CentOS-Stream-9-latest-x86_64-dvd1.iso(安装包大)JDK jdk1.8:…...

leetcode 2466. 统计构造好字符串的方案数

题目如下 数据范围 本题就是加了马甲的跳格子问题即一次能选择跳zero格或者one格(注意这两个不是定值&#xff0c;不是翻译成0和1它们只是代表能跳几格)我们令f(i)为从第0格跳到i格的路径数(也就是好串有几个)显然如果存在的话&#xff1a; f(i) f(i - zero) f(i - one)。…...

Jupyter Notebook自动保存失败等问题的解决

一、未生成配置文件 需要在命令行中&#xff0c;执行下面的命令自动生成配置文件 jupyter notebook --generate-config 执行后会在 C:\Users\用户名\.jupyter目录中生成文件 jupyter_notebook_config.py 二、在网页端打开Jupyter Notebook后文件保存失败&#xff1b;运行代码…...

局域网内别的电脑怎么连接到对方的mysql数据库

要让局域网内的其他电脑连接到一台主机上的 MySQL 数据库,你需要进行一些配置,包括 MySQL 服务器的设置、权限调整,以及客户端连接的步骤。以下是详细的步骤说明: 1. 确保 MySQL 服务器允许远程连接 默认情况下,MySQL 服务器可能只允许本地连接(localhost)。你需要修改…...

flask和django的对比

Flask 和 Django 都是流行的 Python Web 框架&#xff0c;尽管它们都用于构建 Web 应用&#xff0c;但它们的设计理念和使用场景有所不同。以下是它们之间的一些对比&#xff1a; 1. 框架类型 Flask&#xff1a;微框架&#xff08;Micro-framework&#xff09;&#xff0c;意…...

基于 GEE 批量下载陆地植被净初级生产力 NPP 产品

目录 1 陆地植被净初级生产力&#xff08;NPP&#xff09; 2 完整代码 3 运行结果 1 陆地植被净初级生产力&#xff08;NPP&#xff09; 陆地植被净初级生产力&#xff08;NPP&#xff09;是指植物在单位时间单位面积上由光合作用产生的有机物质总量中扣除自养呼吸后的剩余…...

使用Deepseek ,怎么很好的与Deepseek 进行精准问答

与 DeepSeek 进行高效问答的关键在于 清晰表达需求、合理使用功能、灵活调整提问方式。以下是一些实用建议&#xff1a; 一、基础原则 明确问题 ✅ 清晰描述背景、目标和具体需求。 ❌ 避免模糊提问&#xff1a;“帮我写点东西”→ ✅“我需要一篇关于AI在医疗领域应用的500字…...

cefsharp131升级132测试(WinForms.NETCore)

一、升级(Nuget) 版本说明(readme):最低.NET Core3.1 (NET5.0+) + Visual C++ 2019 Redist 二、试运行、兼容性测试...

docker部署及操作

目录 一、Docker的简介 二、基础环境配置以及部署 1. Linux基础配置 2. 开启Linux内核的流量转发功能 一、Docker的简介 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows …...

Jmeter对图片验证码的处理

Jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 通过jmeter对图片验证码…...

DeepSeek本地部署_cherry studio知识库搭建

1.下载并安装&#xff1a;ollama Download Ollama on macOSDownload Ollama for macOShttps://ollama.com/download 安装是否成功确认&#xff0c;管理员权限运行PowerShell&#xff1a; ollama -h 2.下载安装deepseek 管理员方式运行PowerShell&#xff0c;运行命令&#x…...

CSS 实现下拉菜单效果实例解析

1. 引言 在 Web 开发过程中&#xff0c;下拉菜单是一种常见且十分实用的交互组件。很多前端教程都提供过简单的下拉菜单示例&#xff0c;本文将以一个简洁的实例为出发点&#xff0c;从 HTML 结构、CSS 样式以及整体交互逻辑三个层面进行详细解析&#xff0c;帮助大家理解纯 C…...

项目场景拷打

补偿事务解决超卖 通过补偿事务避免超卖问题&#xff0c;可以通过以下几种方式实现&#xff1a; 1. 使用数据库事务与锁机制 事务管理&#xff1a;将库存扣减和订单生成操作放在同一个数据库事务中&#xff0c;确保操作的原子性。如果事务中任何一个步骤失败&#xff0c;则整…...

C语言之扫雷

C语言之扫雷 game.hgame.ctest.c 参考 https://blog.csdn.net/m0_62391199/article/details/124694375 game.h #pragma once #include <stdio.h> #include <time.h> #include <stdlib.h>#define ROW 9 #define COL 9#define ROWS ROW2 #define COLS COL2#de…...

android手机本地部署deepseek1.5B

手机本地部署大模型需要一个开源软件 Release Release v1.6.7 a-ghorbani/pocketpal-ai GitHub 下载release版本apk 它也支持ios,并且是开源的,你可以编译修改它 安装完后是这样的 可以下载推荐的模型,也可以在pc上下载好,然后copy到手机里 点 + 号加载本地模型...

用C语言实现斐波那契数列:从基础代码到深入理解

在编程的世界里&#xff0c;斐波那契数列是一个经典且有趣的概念&#xff0c;今天我们就通过一段C语言代码来深入探索如何生成斐波那契数列。 代码初览 这段代码实现了输入一个整数 n &#xff0c;然后输出斐波那契数列的第 n 项。 代码逐行解析 变量声明&#xff1a; - int …...

vue3 怎么自动全局注册某个目录下的所有 vue 和 tsx 组件

在开发 vue3 项目时&#xff0c;我们会有这样的诉求&#xff0c;怎么自动全局注册某个目录下的所有 vue 和 tsx 组件&#xff1f; 虽然已经有非常强大的 unplugin-vue-components 支持&#xff0c;但是在某些动态场景下&#xff0c;unplugin-vue-components 也选择了不支持。 …...

Android 消息总站 设计思路

项目是组件化模式&#xff0c;这里记录下项目消息总站设计思路 目录 1、接口模式 2、Viewmodel 模式 3、LiveDataBus 模式 3、EventBus 模式 1、接口模式 消息总站&#xff1a;MessageCenter 单利模式 public class MessageCenter {private static MessageCenter instanc…...

webstorm 右下角git分支组件不显示如何恢复

1、在上方工具栏点击view 2、选择Appearance 3、选择 Status Bar Widgets 4、勾选Git Branch 目录如下图所示...

三、k8s pod详解

pod详解的相关的基础知识和初始化容器&#xff0c;以及私有化的镜像仓库*。 pod进阶&#xff1a;pod的状态&#xff0c;pod的探针 pod的详解&#xff1a; pod是k8s集群管理的最小单位&#xff0c;最小的资源组件&#xff0c;也是最小化运行容器的资源对象。 容器运行在pod里…...

代码随想录算法训练day39--动态规划之《打家劫舍系列》

代码随想录算法训练 —day39 文章目录 代码随想录算法训练前言一、198.打家劫舍二、213.打家劫舍II三、337.打家劫舍 III总结 前言 今天是算法训练的第39天&#xff0c;希望自己能够坚持下来&#xff01; 今日任务依旧是动态规划&#xff0c;不过是打家劫舍系列&#xff1a; …...

AI是什么?

一、概述 1.1 AI是什么 就像给机器装了个"会学习的大脑"&#xff0c;让它们能像人一样&#xff1a; 看懂世界&#xff08;比如手机相册自动识别猫狗照片&#xff09;听懂人话&#xff08;比如叫"Siri定个闹钟"&#xff09;自己思考&#xff08;比如围棋…...

ZooKeeper 的典型应用场景:从概念到实践

引言 在分布式系统的生态中&#xff0c;ZooKeeper 作为一个协调服务框架&#xff0c;扮演着至关重要的角色。它的设计目的是提供一个简单高效的解决方案来处理分布式系统中常见的协调问题。本文将详细探讨 ZooKeeper 的典型应用场景&#xff0c;包括但不限于配置管理、命名服务…...

C++ list介绍

文章目录 1. list简介2. list的实现框架2.1 链表结点2.2 链表迭代器2.3 链表 3. list迭代器及反向迭代器设计3.1 list迭代器3.2 list反向迭代器3.3 list迭代器失效 4. list与vector比较 1. list简介 list&#xff0c;即链表。 链表的种类有很多&#xff0c;是否带头结点&#…...

暂未整理啊

测码学院 python的数据类型 不可变数据类型&#xff1a;字符串/数字/元组/ type&#xff08;变量名&#xff09; 获得数据的类型 str&#xff1a;字符串 int&#xff1a;整数 float&#xff1a;浮点数 bool&#xff1a;true/false 布尔类型 list&#xff1a;列表 dict&…...

C# Basic

文章目录 项目地址一、基础501. What is CIL?2. What is CLR?3. What is the difference betweent value type and reference types?4. what is boxing and unboxing?5. How are exceptions handled in C#?6. What is the difference between a class and a struct?7. Wh…...

小红书爬虫: 获取所需数据

小红书&#xff0c;又名 “小红书 ”或简称 “红”&#xff0c;已迅速成为中国社交和电子商务领域的重要参与者&#xff0c;成为一个不可或缺的平台。对于企业、营销人员和数据分析师来说&#xff0c;从小红书收集数据可以获得宝贵的洞察力&#xff0c;从而推动业务增长。虽然这…...

人工智能学习(七)之神经网络

目录 一、引言 二、经典神经网络回顾 &#xff08;一&#xff09;结构与计算过程 &#xff08;二&#xff09;局限性 三、循环神经网络&#xff08;RNN&#xff09;原理 &#xff08;一&#xff09;基本结构 &#xff08;二&#xff09;计算过程 &#xff08;三&#xf…...

LeetCode --- 435周赛

题目列表 3442. 奇偶频次间的最大差值 I 3443. K 次修改后的最大曼哈顿距离 3444. 使数组包含目标值倍数的最少增量 3445. 奇偶频次间的最大差值 II 一、奇偶频次间的最大差值I 统计字母出现次数&#xff0c;然后分别统计出现偶数次的最小值和出现奇数次的最大值&#xff0c;…...

算法 ST表

目录 前言 一&#xff0c;暴力法 二&#xff0c;打表法 三&#xff0c;ST表 四&#xff0c;ST表的代码实现 总结 前言 ST表的主要作用是在一个区间里面寻找最大值&#xff0c;具有快速查找的功能&#xff0c;此表有些难&#xff0c;读者可以借助我的文章和网上的课程结…...

【AI论文】使用滑动磁贴注意力实现快速视频生成

摘要&#xff1a;扩散变换器&#xff08;DiTs&#xff09;凭借3D全局注意力机制在视频生成领域达到了最先进水平&#xff0c;但其计算成本高昂——生成一段仅5秒的720P视频时&#xff0c;仅注意力计算就占用了总推理时间的945秒中的800秒。本文引入了滑动磁贴注意力&#xff08…...

MAAS | Ollama 搭建本地 AI 大模型 deepseekWeb 界面调用

目录 一、环境准备二、安装 Ollama三、下载并部署 DeepSeek 模型四、简单交互五、通过 Web 界面调用大模型 在当今人工智能快速发展的时代&#xff0c;本地部署大语言模型赋予了用户更高的灵活性和个性化服务体验。本文介绍了如何准备环境、安装Ollama框架、下载并部署DeepSeek…...

Arduino 第十一章:温度传感器

Arduino 第十一章&#xff1a;LM35 温度传感器 一、LM35 简介 LM35 是美国国家半导体公司&#xff08;现德州仪器&#xff09;生产的一款精密集成电路温度传感器。与基于热力学原理的传统温度传感器不同&#xff0c;LM35 能直接将温度转换为电压输出&#xff0c;且输出电压与…...

普通用户授权docker使用权限

1、检查docker用户组 sudo cat /etc/group |grep docker 若显示&#xff1a;docker:x:999: # 表示存在否则创建docker用户组&#xff1a; sudo groupadd docker2、查看 /var/run/docker.sock 的属性 ll /var/run/docker.sock 显示&#xff1a; srw-rw---- 1 root root 0 1月…...