⌨️算法模板(Java版)_链表(单链表、双链表)、栈和队列
2024-10-8
| 2024-10-8
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
@ZZHow(ZZHow1024)

单链表(静态链表)

💡
使用数组模拟单链表(静态链表),head 为头指针,e 数组为数据,ne 数组为指针。

双链表(静态链表)

💡
使用数组模拟双链表(静态链表),索引 0 为头结点,索引 1 为尾结点,e 数组为数据,l 数组为左指针,r 数组为右指针。

💡
使用数组模拟栈,stk 数组为数据,tt 既指示元素个数也作为指针指示数组下标。

队列

💡
使用数组模拟队列,q 数组为数据,hh 作为指针指向对头,tt 作为指针指向队尾。

单调栈

💡
在数组模拟栈的基础上,每次插入数据前将比待插入数据大的元素弹出,一直弹栈到栈顶元素小于待插入数据或栈为空。
应用:求输入的数左边第一个比它小的数。

单调队列

💡
在数组模拟队列的基础上,每次插入数据前将队尾比待插入数据大(小)的元素弹出,一直弹栈到队尾元素小于(大于)待插入数据或队列为空。
应用:滑动窗口求最小(最大)值。

栈的应用——表达式求值

💡
“表达式求值”问题,两个核心关键点:
  • 双栈,一个操作数栈(num),一个运算符栈(op);
  • 运算符优先级,栈顶运算符,和,即将入栈的运算符的优先级比较:
      1. 如果栈顶的运算符优先级低,新运算符直接入栈。
      1. 如果栈顶的运算符优先级高,先出栈计算,新运算符再入栈。

Trie树的应用——最大异或对

并查集的应用——食物链

  • 算法
  • Java
  • 学技术
  • 算法模板(Java版)_字符串、并查集和堆算法模板(Java版)_双指针算法、位运算、离散化和区间合并
    Loading...
    目录