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

【刷题模板】链表、堆栈

算法模板

    • 单链表
    • 双链表
    • 队列
      • 1. 普通队列
      • 2. 循环队列
    • 单调栈
    • 单调队列

单链表


int head, e[N], ne[N], idx;void init()
{head = -1;idx = 0;
}void insert(int a)
{e[idx] = a, ne[idx] = head, head = idx++;
}
void remove()
{head = ne[head]
}

双链表

int e[N], l[N], r[N], idx;void init()
{r[0] = 1, l[1] = 0;idx = 2;
}void insert(int a, int x)
{e[idx] = x;l[idx] = a, r[idx] = r[a];	// a是指针;l[r[a]] = idx, r[a] = idx++;	// idx是插入节点的指针;
}void remove(int a)
{l[r[a]] = l[a];		// r[a]表示a右节点的指针;r[l[a]] = r[a];
}


int stk[N], tt = 0;
stk[++tt] = x;
tt--;
stk[tt];
if (tt > 0)
{}

队列

1. 普通队列

int q[N], hh = 0, tt = -1;
q[++tt] = x;
hh ++;
q[hh];if (hh <= tt)
{}

2. 循环队列

int q[N], hh = 0, tt = 0;
q[tt++] = x;
if (tt == N) tt = 0;hh++;
if (hh == N) hh = 0;q[hh];if (hh != tt)
{}

单调栈

数列:3 4 2 7 5
-1 3 -1 2 2
先考虑暴力做法,然后再优化;

数列: a1, a2, a3, … an;
if x < y
且,a(x) > a(y), 则a(x)永远不会被取到(不会被放入单调栈中);

if std[tt] >= a(i)
tt–;

常见模型:找出每个数左边离它最近的比它大/小的数;
int tt = 0;
for (int i = 1; i <= n; i++)
{while (tt && check(std[tt], i)) tt--;stk[++tt] = i;
}

单调队列

在这里插入图片描述

常见模型: 找出滑动窗口中最大、最小值
int hh = 0, tt = -1;
for (int i = 0; i < n; i++)
{while (hh <= tt && check_out(q[hh]) hh++;while (hh <= tt && check(q[tt], i)) t--;q[++tt] = i;
}

相关文章:

  • 【Vue3】(三)vue3中的pinia状态管理、组件通信
  • 【教学类-53-02】20250607自助餐餐盘教学版(配餐+自助餐)
  • 【razor】x264 在 的intra-refresh和IDR插帧
  • c++对halcon的动态链接库dll封装及调用(细细讲)
  • LLMs 系列科普文(3)
  • 深入探索CDC:实时数据同步利器
  • 227.2018年蓝桥杯国赛 - 交换次数(中等)- 贪心
  • 手动实现C#ArrayList容器
  • yaklang 中的各种 fuzztag 标签及其用法
  • SOC-ESP32S3部分:36-适配自己的板卡
  • 【python深度学习】Day 48 PyTorch基本数据类型与操作
  • MySql读写分离部署(一主一从,双主双从,Mycat)
  • 用于机器学习的 Podman 简介:简化 MLOps 工作流程
  • javaSE复习(7)
  • LeetCode 2894.分类求和并作差
  • 基于51单片机的花样流水灯
  • 6个月Python学习计划 Day 17 - 继承、多态与魔术方法
  • 程序问题实录
  • Python BeautifulSoup解析HTML获取图片URL并下载到本地
  • 【电路】阻抗匹配
  • wordpress for bae/西安seo排名外包
  • 房地产交易网站模版/上海推广网站
  • 宁乡建设局网站/站长工具seo推广秒收录
  • 东莞电子网站建设/计算机培训机构哪个最好
  • 武汉网站建设工作室/宁波网络推广产品服务
  • 做h网站/网站的优化与推广分析