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

算法练习(队列)

队列

单向队列

1. 定义一个队列
Queue<Integer> q = new LinkedList<>();
Queue<Character> q = new LinkedList<>();
2. 入队列
q.offer(1);
q.offer(2);  // 从队尾入队列
q.add();
3. 出队列
q.poll()  // 从队头出队列,并将删除的元素返回
4. 获取队列长度
q.size()  // 获取长度
5. 获取头元素
q.peek()  // 获取头元素
6. 判断队列是否为空
q.isEmpty()  // 判断队列是否为空
7. 将字符串转换为队列
// 将字符串转为队列
for(int i = 0; i < str.length(); i++){queue.offer(str.charAt(i));
}

双向队列

1. 定义
Deque<Integer> stack = new ArrayDeque<>();//双端队列的线性实现
Deque<Integer> deque = new LinkedList<>();//双端队列的链式实现
2. 从队尾添加或删除
deque.addLast()
deque.pollLast();

循环队列

  1. 通过添加 size 属性记录,如果size等于数组长度则满,否则不满
  2. 保留一个位置
  3. 使用标记,判断尾的下一个是不是头
相关方法
Front();  // 从队首获取元素
Rear();  // 获取队尾元素
enQueue(value);  // 向循环队列插入一个元素
deQueue();  // 从循环队列中删除一个元素
isFull;  // 检查循环队列是否已满

其他算法知识点总结

方法

1. 将int类型转换为string类型

Integer.toString(m):仅限整数
String.valueOf(m):可以处理多种数据类型的转换

2. 将string转为int

Integer.parseInt()|Integer.valueOf()
num1.charAt(i)-‘0’

3. 字符移位
String str = "abc";
int count = 3;  // 后移位数
for(int i = 0; i < str.length();i++){char charIndex = str.charAt(i);charIndex = (char)((charIndex - 'a' + count) % 26 + 'a');
}
4. 统计一个字符串在另一个字符串中出现的次数
String str = "1231132323";  // 完整字符串
String s = "123"; // 判断字符串
char[] charArray = str.toCharArray(); 
char[] charArray2 = s.toCharArray(); 
int length = charArray2.length; // 需要判断的字符串长度
int count = 0 ; // 计数
int cur = 0 ; // 数组下标
for(int x = 0 ; x < charArray.length ; x++) {char c1 = charArray[x];char c2 = charArray2[cur];if(c1 == c2) {if(cur == (length-1)) {count ++ ; // 找到一个字符串,计数+1cur = 0 ;}else {cur++; // 找到部分,下标+1}}else {cur = 0 ; // 没找到,下标置为0}
}
System.out.println("统计到字符串的个数:count333="+count);
5. 比较两个对象大小关系

compareTo
(o2 + o1).compareTo(o1 + o2) 来比较两个字符串拼接后的大小关系

常规知识

1. 10的9次方

long m = 1e9

2. 完全平方

一个数的因子个数为奇数当且仅当它是一个完全平方数
计算范围[A,B]内的完全平方数:ceil(sqrt(B))-floor(sqrt(A))+1

3. 魔方的模型,无论行和列如何交换,其斜方向上的对角线列总是不变的
4 . 1MB = 1024KB 1KB = 1024字节(byte) 1字节 = 8位(bits)

相关文章:

算法练习(队列)

队列 单向队列 1. 定义一个队列 Queue<Integer> q new LinkedList<>(); Queue<Character> q new LinkedList<>();2. 入队列 q.offer(1); q.offer(2); // 从队尾入队列 q.add();3. 出队列 q.poll() // 从队头出队列&#xff0c;并将删除的元素…...

HarmonyOS NEXT开发进阶(十五):日志打印 hilog 与 console.log 的区别

文章目录 一、前言二、两者区别对比三、HiLog 详解四、拓展阅读 一、前言 在日常开发阶段&#xff0c;日志打印是调试程序非常常用的操作&#xff0c;在鸿蒙的官方文档中介绍了hilog这种方式&#xff0c;前端转过来的开发者发现console.log也可以进行日志打印&#xff0c;而且…...

【差分隐私相关概念】差分隐私中的稀疏向量技术

差分隐私中的稀疏向量技术&#xff08;Sparse Vector Technique, SVT&#xff09; 稀疏向量技术&#xff08;SVT&#xff09;是差分隐私中的一种高效机制&#xff0c;专用于处理稀疏高影响查询的场景。其核心思想是&#xff1a;当面对大量查询时&#xff0c;仅对其中“显著超过…...

快速幂算法还有用吗?——从内置函数到高性能计算的深度解析

博主在学习过程中遇到了一个疑问&#xff0c;既然C语言中有内置函数pow&#xff0c;那为什么还需要算法思想中的快速幂算法呢&#xff1f;下面将会讲解快速幂算法在特定场景下依然非常有用&#xff0c;具体原因如下&#xff1a; 目录 1. 精度与整数运算 2. 性能对比 3. 应用场…...

开源测试用例管理平台

不可错过的10个开源测试用例管理平台&#xff1a; PingCode、TestLink、Kiwi TCMS、Squash TM、FitNesse、Tuleap、Robot Framework、SpecFlow、TestMaster、Nitrate。 开源测试用例管理工具提供了一种透明、灵活的解决方案&#xff0c;使团队能够在不受限的情况下适应具体的测…...

vue 权限应用

目录 一、系统菜单栏权限 二、系统页面按钮权限 在企业开发中&#xff0c;不同的用户所扮演的角色不一样&#xff0c;角色拥有权限&#xff0c;所以用户拥有角色&#xff0c;就会有角色对应的权限。例如&#xff0c;张三是系统管理员角色&#xff0c;登录后就拥有整个系统的…...

鸿蒙HarmonyOS NEXT设备升级应用数据迁移流程

数据迁移是什么 什么是数据迁移&#xff0c;对用户来讲就是本地数据的迁移&#xff0c;终端设备从HarmonyOS 3.1 Release API 9及之前版本&#xff08;单框架&#xff09;迁移到HarmonyOS NEXT&#xff08;双框架&#xff09;后保证本地数据不丢失。例如&#xff0c;我在某APP…...

利用 PCI-Express 交换机实现面向未来的推理服务器

在数据中心系统的历史上&#xff0c;没有比被 Nvidia 选为其 AI 系统的组件供应商更高的赞誉了。 这就是为什么新兴的互连芯片制造商 Astera Labs 感到十分高兴&#xff0c;因为该公司正在 PCI-Express 交换机、PCI-Express 重定时器和 CXL 内存控制器方面与 Broadcom 和 Marv…...

Python调用手机摄像头检测火焰烟雾的三种方法

方法1&#xff1a;使用IP摄像头应用 OpenCV 1. 在手机上安装IP摄像头应用&#xff08;如IP Webcam for Android&#xff09; 2. 配置应用并启动服务器 3. 在Python中使用OpenCV连接 import cv2 import numpy as np # 手机IP摄像头URL&#xff08;替换为你的手机IP和端口…...

Python if else while for 学习笔记

一.if&#xff0c;else if语句用于根据条件执行代码块 else语句可与if语句结合&#xff0c;当if判断为假时执行else语句 x10 if x>5:print("x大于5") y3 if y>5:print("y大于5") else:print("y小于等于5")结果&#xff1a; 二.while循环…...

正则化是什么?

正则化&#xff08;Regularization&#xff09;是机器学习中用于防止模型过拟合&#xff08;Overfitting&#xff09;的一种技术&#xff0c;通过在模型训练过程中引入额外的约束或惩罚项&#xff0c;降低模型的复杂度&#xff0c;从而提高其泛化能力&#xff08;即在未见数据上…...

搜索-BFS

马上蓝桥杯了&#xff0c;最近刷了广搜&#xff0c;感觉挺有意思的&#xff0c;广搜题类型都差不多&#xff0c;模板也一样&#xff0c;大家写的时候可以直接套模板 这里给大家讲一个比较经典的广搜题-迷宫 题目问问能否走到 (n,m) 位置&#xff0c;假设最后一个点是我们的&…...

《边缘计算风云录:FPGA与MCU的算力之争》

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 文章目录 **第一章&#xff1a;边城烽烟——数据洪流压境****第二章&#xff1a;寒铁剑匣——FPGA的千机变****第三章&#xff1a;枯木禅杖——MCU的至简道****第四章&#xff1a;双生契…...

R-GCN-Modeling Relational Data with GraphConvolutional Networks(论文笔记)

CCF等级&#xff1a;B 发布时间&#xff1a;2018年6月 25年3月31日交 目录 一、简介 二、原理 1.整体 2.信息交换与更新 2.1基分解 2.2块对角矩阵 3.实体分类或链接预测 3.1实体分类 3.2链接预测 三、结论和未来工作 一、简介 RGCN通过允许不同关系类型之间的信息…...

蓝桥杯第十六届模拟赛——基础细节考频分析

文章目录 前言一、STL函数二、日期问题三、质数与约数四、基本常识总结 前言 一、STL函数 #include< cmath > 详解floor函数、ceil函数和round函数 1.floor() 功能&#xff1a;把一个小数向下取整如果数是2.2 &#xff0c;那向下取整的结果就为2.000000如果数是-2.2 &…...

【C++初阶】----模板初阶

1.泛型函数 泛型编程&#xff1a;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。模板是泛型编程的基础。 2.函数模板 2.1函数模板的概念 函数模板代表了一个函数家族&#xff0c;该函数模板与类型无关&#xff0c;在使用时被参数化&#xff0c;根据实参类型…...

PyCharm操作基础指南

一、安装与配置 1. 版本选择 专业版&#xff1a;支持 Web 开发&#xff08;Django/Flask&#xff09;、数据库工具、科学计算等&#xff08;需付费&#xff09;。 社区版&#xff1a;免费&#xff0c;适合纯 Python 开发。 2. 安装步骤 访问 JetBrains 官网 下载对应版本。…...

Pycharm(七):几个简单案例

一.剪刀石头布 需求&#xff1a;和电脑玩剪刀石头布游戏 考察点&#xff1a;1.随机数&#xff1b;2.判断语句 import random # numrandom.randint(1,3) # print(num) # print(**30) #1.录入玩家手势 playerint(input(请输入手势&#xff1a;&#xff08;1.剪刀 2.石头 3&…...

Android并发编程:线程池与协程的核心区别与最佳实践指南

1. 基本概念对比 特性 线程池 (ThreadPool) 协程 (Coroutine) 本质 Java线程管理机制 Kotlin轻量级并发框架 最小执行单元 线程(Thread) 协程(Coroutine) 创建开销 较高(需分配系统线程资源) 极低(用户态调度) 并发模型 基于线程的抢占式调度 基于协程的协作式调度 2. 核心差异…...

MySQL内存使用率高问题排查与解决方案:

目录标题 **一、问题现象****二、核心排查步骤****1. 参数检查****2. 内存使用分析****3. 存储过程/函数/视图检查****4. 操作系统级检查** **三、解决方案****1. 调整MySQL配置****2. 关闭透明大页&#xff08;THP&#xff09;****3. 优化查询与存储过程****4. 硬件与环境优化…...

gnvm切换node版本号

1. gnvm下载官网 GNVM - Node.js version manager on Windows by Go 2. 安装 2.1 不存在 Node.js 环境 下载并解压缩 gnvm.exe 保存到任意文件夹&#xff0c;并将此文件夹加入到环境变量 Path。 2.2 存在 Node.js 环境 下载并解压缩 gnvm.exe 保存到 Node.js 所在的文件夹。 2.…...

PyTorch 深度学习实战(29):目标检测与 YOLOv12 实战

在上一篇文章中&#xff0c;我们探讨了对比学习与自监督表示学习。本文将深入计算机视觉的核心任务之一——目标检测&#xff0c;重点介绍最新的 YOLOv12 (You Only Look Once v12) 算法。我们将使用 PyTorch 实现 YOLOv12 模型&#xff0c;并在 COCO 数据集上进行训练和评估。…...

Python爬虫:开启数据抓取的奇幻之旅(一)

目录 一、爬虫初印象&#xff1a;揭开神秘面纱​ 二、工欲善其事&#xff1a;前期准备​ &#xff08;一&#xff09;Python 环境搭建​ 1.下载 Python 安装包&#xff1a;​ 2.运行安装程序&#xff1a;​ 3.配置环境变量&#xff08;若自动添加失败&#xff09;&#x…...

python下载m3u8格式视频

一、安装 m3u8库 pip install requests pip install requests m3u8 二、编码实现 import os import re import requests import subprocess# 下载ts文件 def down_ts_file(base_url, m3u8_url, download_dir):# 从m3u8文件中获取所有ts的分片名称信息response requests.get…...

【区块链安全 | 第五篇】DeFi概念详解

文章目录 DeFi1. DeFi 生态概览2. 去中心化交易所&#xff08;DEX&#xff09;2.1 AMM&#xff08;自动做市商&#xff09;模型2.2 订单簿模式&#xff08;现货交易&#xff09; 3. 借贷协议3.1 Aave3.2 使用闪电贷&#xff08;Flash Loan&#xff09; 4. 稳定币&#xff08;St…...

【初探数据结构】归并排序与计数排序的序曲

&#x1f4ac; 欢迎讨论&#xff1a;在阅读过程中有任何疑问&#xff0c;欢迎在评论区留言&#xff0c;我们一起交流学习&#xff01; &#x1f44d; 点赞、收藏与分享&#xff1a;如果你觉得这篇文章对你有帮助&#xff0c;记得点赞、收藏&#xff0c;并分享给更多对数据结构感…...

基于ruoyi快速开发平台搭建----超市仓库管理(修改记录1)

一、数据库的设计一定注意不要用关键字 数据库是同学设计的&#xff0c;但是在实践过程中&#xff0c;发现&#xff0c;生成的代码一直报错&#xff0c;结果发现数据库里面商品表里面的商品类别竟然设置成class, 注意&#xff1a;&#xff1a; class 是 Java 中的关键字&…...

《AI加持,SQL Server预测性维护全攻略》

在数字化时代&#xff0c;数据就是企业的生命线&#xff0c;而SQL Server作为一款应用广泛的关系型数据库管理系统&#xff0c;承载着企业海量的数据资产。但数据库运行过程中&#xff0c;故障就像隐藏在暗处的“定时炸弹”&#xff0c;随时可能引发数据丢失、业务中断等严重后…...

Java基础——面向对象

1.抽象Abstract&#xff1a;抽象类和抽象方法&#xff1b; 抽象类&#xff1a;不完整的类&#xff0c;就是抽象类&#xff1a;abstract class 类名&#xff1b; 抽象方法:只有声明&#xff0c;没有实现的方法&#xff1b; abstract 返回值类型 方法名&#xff08;参数&#…...

Springboot学习笔记3.20

目录 1.实战篇第一课 我们将会在本次实战中学习到哪些知识点&#xff1f; 开发模式和环境搭建&#xff1a; 注册接口 1.Lombok 2.开发流程 1.controller层&#xff0c;这个层会指明访问路径和要执行的逻辑&#xff1a; 2.我们把返回结果根据接口文档包装成一个类result&a…...