⌨️算法模板(Java版)_字符串、并查集和堆
2024-10-17
| 2024-10-17
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
@ZZHow(ZZHow1024)

字符串

KMP字符串

💡
致敬三位前辈:D.E.Knuth、J.H.Morris 和 V.R.Pratt!
字符串模式匹配算法,大大避免重复遍历的情况,克努特-莫里斯-普拉特算法。

Trie树

💡
用于高效地存储和查找字符串集合的数据结构。

并查集

💡
两个操作:
  1. 将两个集合合并。
  1. 询问两个元素是否在一个集合当中。
基本原理:每个集合用一棵树来表示。树根的编号就是整个集合的编号。每个节点存储 它的父节点,P[x] 表示 x 的父节点。
问题 1:如何判断树根 if (p[x] == ×) {return true;} 问题 2:如何求 x 的集合编号 while (p[x] != x) x = p[x]; 问题 3:如何合并两个集合,p[x] 是 x 的集合编号,p[y] 是 y 的集合编号 p[x] = y;

💡
手写堆,功能:
  1. 插入一个数:heap[++size] = x; up(size);
  1. 求集合中的最小值:heap[1];
  1. 删除最小值:heap[1] = heap[size]; size--; down(1);
  1. 删除任意一个元素:heap[1] = heap[k]; size--; down(1); up(1);
  1. 修改任意一个元素:heap[k] = x; down(k); up(k);
使用一维数组存储:
  • x 左儿子:2x
  • x 右儿子:2x + 1
  • 算法
  • Java
  • 学技术
  • 算法模板(Java版)_哈希表算法模板(Java版)_链表(单链表、双链表)、栈和队列
    Loading...
    目录