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

算法练习(队列)

队列

单向队列

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 ++ ; // 找到一个字符串,计数+1
            cur = 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)

相关文章:

  • 框架修改思路
  • Elasticsearch安全与权限控制指南
  • CoAP Shell 笔记
  • cocos 图片上传与下载
  • C#:字符串插值(String Interpolation)
  • AI绘画 | Stable Diffusion 图片背景完美替换
  • 动态规划学习——背包问题
  • 如何模拟用户行为避免被检测到是爬虫?
  • 新手如何成为一名顶尖黑客?只需这十二个步骤轻松入门!
  • Apache Hive中数据类型转换为对应Snowflake中数据类型的方法
  • 算法中子数组问题详解,多种解法,包含对应题目!
  • Windows上使用bash脚本
  • RFID技术在工业生产线自动化中的应用方案
  • DeepSeek+QuickAPI:MySQL AI 智能体终极篇(三)
  • uniapp微信小程序封装navbar组件
  • 一文读懂 UML:基础概念与体系框架
  • 【区块链安全 | 第二十二篇】类型之字面量和基础类型之间的转换
  • Springboot 中使用 List<Integer> 与 JSONArray 处理 JSON 数组的性能与实践
  • ZGC 参数优化与 GC 触发机制解析分享
  • 《混沌钟的RISC-V指令集重构》
  • 企业公示信息查询系统广西/seo网络培训机构
  • 咸宁网站开发/代运营哪家比较可靠
  • 网站建设系统公司/郑州网站定制
  • 免费制作一个自己的网站吗/服务营销的七个要素
  • 广西流行病毒最新消息新闻/沈阳seo顾问
  • 网站首页流程图/优化关键词排名提升