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

算法练习(3):牛客在线编程04 堆/栈/队列

package jz.bm;import java.util.*;public class bm4 {/*** BM42 用两个栈实现队列*/Stack<Integer> stack1 = new Stack<>();Stack<Integer> stack2 = new Stack<>();public void push(int node) {stack1.push(node);}public int pop() {while (!stack1.isEmpty()) {stack2.push(stack1.pop());}int res = stack2.pop();while (!stack2.isEmpty()) {stack1.push(stack2.pop());}return res;}/*** BM43 包含min函数的栈*/Stack<Integer> stack42 = new Stack<>();Stack<Integer> stack42min = new Stack<>();public void push42(int node) {stack42.push(node);if (stack42min.isEmpty()) {stack42min.push(node);} else {if (node < stack42min.peek()) {stack42min.push(node);} else {stack42min.push(stack42min.peek());}}}public void pop42() {stack42.pop();stack42min.pop();}public int top42() {return stack42.peek();}public int min42() {return stack42min.peek();}/*** BM44 有效括号序列*/public boolean isValid (String s) {if (s.length() == 0) {return true;}Stack<Character> stack = new Stack<>();for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == '(') {stack.push(')');} else if (s.charAt(i) == '{') {stack.push('}');} else if (s.charAt(i) == '[') {stack.push(']');} else {if (stack.size() != 0 && stack.peek() == s.charAt(i)) {stack.pop();} else {stack.push(s.charAt(i));}}}return stack.size() <= 0;}/*** BM45 滑动窗口的最大值*/public ArrayList<Integer> maxInWindows (int[] num, int size) {ArrayList<Integer> res = new ArrayList<>();if (size > num.length || size == 0) {return res;}PriorityQueue<Integer> priorityQueue = new PriorityQueue<>((o1, o2) -> o2 - o1);//初始化for (int i = 0; i < size; i++) {priorityQueue.add(num[i]);}res.add(priorityQueue.peek());for (int i = size; i < num.length; i++) {priorityQueue.remove(num[i - size]);priorityQueue.add(num[i]);res.add(priorityQueue.peek());}return res;}/*** BM46 最小的K个数*/public ArrayList<Integer> GetLeastNumbers_Solution (int[] input, int k) {ArrayList<Integer> res = new ArrayList<>();if (input.length == 0) {return res;}PriorityQueue<Integer> queue = new PriorityQueue<>();for (int i = 0; i < input.length; i++) {queue.add(input[i]);}for (int i = 0; i < k; i++) {res.add(queue.peek());queue.poll();}return res;}/*** BM47 寻找第K大*/public int findKth (int[] a, int n, int K) {PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2 - o1);for (int i = 0; i < n; i++) {queue.add(a[i]);}for (int i = 0; i < K - 1; i++) {queue.poll();}return queue.peek();}/*** BM48 数据流中的中位数*/ArrayList<Integer> list48 = new ArrayList<>();public void Insert(Integer num) {if (list48.size() == 0) {list48.add(num);} else {//插入排序int j = 0;for (; j < list48.size(); j++) {if (num < list48.get(j)) {break;}}list48.add(j, num);}}public Double GetMedian() {int n = list48.size();if (n % 2 == 0) {double a = list48.get(n / 2 - 1);double b = list48.get(n / 2);return (a + b) / 2.0;} else {return (double) list48.get(n / 2);}}/*** BM49 表达式求值*/public int solve (String s) {return recursion(s, 0).get(0);}private ArrayList<Integer> recursion(String s, int index) {Stack<Integer> stack = new Stack<>();int num = 0; //每一个因子int i;char op = '+'; //默认为+,相当于 0 + 表达式for (i = index; i < s.length(); i++) {if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {num = num * 10 + s.charAt(i) - '0';//不是最后一个字符,继续判断是否为数字if (i != s.length() - 1) {continue;}}//遇到(将括号内当成一个数字if (s.charAt(i) == '(') {ArrayList<Integer> res = recursion(s, i + 1);num = res.get(0);i = res.get(1);if (i != s.length() - 1) {continue;}}//数字取完需要计算//当前数字前面的操作符switch (op) {case '+' :stack.push(num);break;case '-':stack.push(-num);break;case '*':int temp = stack.pop();stack.push(temp * num);break;}num = 0;//遇到)结束当前表达式if (s.charAt(i) == ')') {break;} else {op = s.charAt(i);}}int sum = 0;while (!stack.isEmpty()) {sum += stack.pop();}//记录当前表达式的结果和在字符串的位置ArrayList<Integer> list = new ArrayList<>();list.add(sum);list.add(i);return list;}
}

相关文章:

算法练习(3):牛客在线编程04 堆/栈/队列

package jz.bm;import java.util.*;public class bm4 {/*** BM42 用两个栈实现队列*/Stack<Integer> stack1 new Stack<>();Stack<Integer> stack2 new Stack<>();public void push(int node) {stack1.push(node);}public int pop() {while (!stack1…...

mac下安装vue cli脚手架并搭建一个简易项目

目录 1、确定本电脑下node和npm版本是否为项目所需版本。 2、下载vue脚手架 3、创建项目 1、下载node。 如果有node&#xff0c;打开终端&#xff0c;输入node -v和npm -v , 确保node和npm的版本&#xff0c;(这里可以根据自己的需求去选择&#xff0c;如果对最新版本的内容有…...

尝试-InsCode Stable Diffusion 美图活动一期

一、 Stable Diffusion 模型在线使用地址&#xff1a; https://inscode.csdn.net/inscode/Stable-Diffusion 二、模型相关版本和参数配置&#xff1a; 活动地址 三、图片生成提示词与反向提示词&#xff1a; 提示词&#xff1a;realistic portrait painting of a japanese…...

【OpenGL学习】之着色器GLSL基础

基本类型: 类型说明void空类型,即不返回任何值bool布尔类型 true,falseint带符号的整数 signed integerfloat带符号的浮点数 floating scalarvec2, vec3, vec4n维浮点数向量 n-component floating point vectorbvec2, bvec3, bvec4n维布尔向量 Boolean vectorivec2, ivec3, iv…...

Python爬虫基础知识点有哪些

目录 Python爬虫基础知识点 Requests库 Beautiful Soup库 正则表达式 数据存储 防止被反爬虫策略 爬虫调度和任务管理 认识robots.txt文件 反爬虫法律与道德 示例代码 Requests库 Beautiful Soup库 正则表达式 数据存储 防止被反爬虫策略 结语 网络世界中信息的…...

【CSS】 vh、rem 和 px 的区别

vh、rem 和 px 都是 CSS 中常见的长度单位&#xff0c;它们有以下区别&#xff1a; px&#xff08;像素&#xff09;是一个绝对单位&#xff0c;表示屏幕上的实际像素点。它的大小不会根据设备或浏览器的设置进行调整&#xff0c;是一个固定值。 rem&#xff08;根元素字体大小…...

如何设置板子从emmc启动-针对imx6ull

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习…...

使用Newtonsoft直接读取Json格式文本(Linq to Json)

使用Newtonsoft直接读取Json格式文本&#xff08;Linq to Json&#xff09; 使用 Newtonsoft.Json&#xff08;通常简称为 Newtonsoft&#xff09;可以轻松地处理 JSON 格式的文本。Newtonsoft.Json 是 .NET 中一个流行的 JSON 处理库&#xff0c;它提供了丰富的功能和灵活性。…...

服务器用友数据库中了locked勒索病毒后怎么解锁数据恢复

随着信息技术的迅速发展&#xff0c;服务器成为现代企业中不可或缺的重要设备。然而&#xff0c;由于网络安全风险的存在&#xff0c;服务器在日常运作中可能遭受各种威胁&#xff0c;包括恶意软件和勒索病毒攻击。近日&#xff0c;我们收到很多企业的求助&#xff0c;企业的用…...

Linux-MariaDB数据库的备份与初始化

Linux-MariaDB数据库的备份与初始化 缘起数据库备份数据库用户查询数据库新建用户数据库权限回收数据库更新密码数据库root密码重置 缘起 Linux系统下我们比较常用的数据库软件是开源又免费的MySQL。MariaDB是MySQL的一个分支&#xff0c;采用GPL授权许可&#xff0c;完全兼容…...

springboot-redis使用fastjson2

1、pom 注&#xff1a;springboot2.*使用fastjson2-extension-spring5&#xff0c;3.*使用fastjson2-extension-spring6 <fastjson.version>2.0.37</fastjson.version> <!-- json --> <dependency><groupId>com.alibaba.fastjson2</groupId…...

SOC FPGA之HPS模型设计(二)

根据SOC FPGA之HPS模型设计(一)&#xff0c; Quartus工程经过全编译后会产生Handoff文件夹、SOPCINFO文件、SVD文件 二、生成Preloader镜像文件 通过信息交换文件Handoff文件生成Preloader&#xff0c;需要用到SOC EDS Preloader也被称为spl(Second Program Loader)或u-boot…...

Go基础—反射,性能和灵活性的双刃剑

Go基础—反射&#xff0c;性能和灵活性的双刃剑 1 简介2 结构体成员赋值对比3 结构体成员搜索并赋值对比4 调用函数对比5 基准测试结果对比 1 简介 现在的一些流行设计思想需要建立在反射基础上&#xff0c;如控制反转&#xff08;Inversion Of Control&#xff0c;IOC&#x…...

MATLAB与ROS联合仿真(慕羽☆)全套开源资料索引

自2021年9月份开始进行MATLAB与ROS联合仿真相关的研究&#xff0c;至2021年12月份研究基本上结束&#xff0c;至今&#xff0c;已经近两年时间&#xff0c;期间曾收到过很多小伙伴的私信&#xff0c;想让我出点教程&#xff0c;期间我也曾多次想要抽点时间出教程&#xff0c;但…...

三、深入浅出WPF之控件与布局

三、控件与布局 图形化用户界面:Graphic User Interface ,它的便捷之处在于对数据的直观性表达,把抽象性的对象通过界面的形式展现出来。很多编程都要自己的GUI工具:像java的Swing、c++的QT 、C#的winform等等. 在日常工作中我们打交道最多的控件无外乎5类: (1)布局控件…...

社群积分运营策略:增加用户忠诚度

构建稳固的用户忠诚度是企业私域营销中至关重要的一环&#xff0c;而社群积分运营策略成为实现这一目标的有效手段。通过巧妙利用积分激励&#xff0c;社群积分运营可以吸引用户积极参与&#xff0c;增加用户的忠诚度和活跃度。本文将深入探讨几个实用的社群积分运营策略&#…...

推荐用于学习RN原生模块开发的开源库—react-native-ble-manager

如题RN的原生模块/Native Modules的开发是一项很重要的技能&#xff0c;但RN官网的示例又比较简单&#xff0c;然后最近我接触与使用、还有阅读了react-native-ble-manager的部份源码&#xff0c;发现里边完全包含了一个Native Modules所涉及的知识点/技术点&#xff0c;故特推…...

MySQL中锁的简介——全局锁

1.锁的概述及分类 2.全局锁的介绍 给数据库加全局锁&#xff1a; flush tables with read lock;数据备份&#xff1a; mysqldump备份指令 root用户名 1234 密码 itcast数据库名称 itcast.sql备份文件名称 mysqldump -uroot -p1234 itcast >itcast.sql;数据库全局锁解锁&am…...

RocketMQ集群4.9.2升级4.9.6版本

本文主要记录生产环境短暂停机升级RocketMQ版本的过程 一、整体思路 1.将生产环境MQ4.9.2集群同步到测试环境&#xff0c;并启动&#xff0c;确保正常运行。 2.参照4.9.2配置4.9.6集群 3.停掉4.9.2集群&#xff0c;启动4.9.6集群&#xff0c;测试确保正常运行。 4.停掉4.9.6集…...

具身智能controller---RT-1(Robotics Transformer)(上---方法介绍)

具身智能controller---RT-1&#xff08;Robotics Transformer&#xff09;&#xff08;上---方法介绍&#xff09; 相关链接摘要和简介相关工作与预备知识系统概述模型 RT-1: ROBOTICS TRANSFORMER模型 相关链接 github链接 主页链接&#xff08;包括论文和训练数据集&#xf…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

微服务通信安全:深入解析mTLS的原理与实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言&#xff1a;微服务时代的通信安全挑战 随着云原生和微服务架构的普及&#xff0c;服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...