前缀树(Tire)—Python

核心思想 空间换时间,是一种用于快速查询的多叉树结构,利用字符串的公共前缀来降低时间 优缺点: 优点:查询效率高,减少字符比较 缺点:内存消耗较大 每次都会从头向下一直到字符串结尾 前缀树 1 单个字符串从前到后加到一棵多叉树上 2 每隔字符串都会有自己所在节点的两个属性path和end,path代

线段树

例题1: > 给定一个正整数数列 $a_1,a_2,…,a_n$,每一个数都在 $0 \sim p-1$ 之间。 可以对这列数进行两种操作: > 1. 添加操作:向序列后添加一个数,序列长度变成 $n+1$; > 2. 询问操作:询问这个序列中最后 $L$ 个数中最大的数是多少。 > > 程序运行的

AVL树

博客地址:https://www.cnblogs.com/zylyehuo/ bst.py # -*- coding: utf-8 -*- # 构造二叉树 class BiTreeNode: def __init__(self, data): self.data = data self.lchild

LeetCode 周赛上分之旅 #42 当 LeetCode 考树上倍增,出题的趋势在变化吗

> ⭐️ **本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 \[彭旭锐] 和 [BaguTree Pro](https://www.mdnice.com/writing/85b28c4e60354865a423728e668fc570) 知识星球提问。** > > 学习数据

【数据结构和算法】Trie树简介及应用详解

Trie树,即字典树,又称单词查找树或键树,是一种树形结构,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

深入理解线段树

线段树(Segment Tree)是常用的维护区间信息的数据结构,它可以在 O(logn) 的时间复杂度下实现单点修改、区间修改、区间查询(区间求和、区间最大值或区间最小值)等操作,常用来解决 RMQ 问题。 RMQ(Range Minimum/Maximum Query) 问题是指:对于长度为 n

学习笔记——斯坦纳树

斯坦纳树 斯坦纳树问题是组合优化问题,与最小生成树相似,是最短网络的一种。最小生成树是在给定的点集和边中寻求最短网络使所有点连通。而最小斯坦纳树允许在给定点外增加额外的点,使生成的最短网络开销最小。 百度百科 在图论里,一般用于解决形如: 给定一个连通图 \(G\),给定 \(k\) 个关键点,选取

生成树欺骗攻击与防御策略

生成树欺骗攻击与防御策略 工作目的 掌握交换机生成树选举的过程、欺骗原理、攻击过程和防范策略 任务分析 生成树的端口有五种状态。交换机的边缘端口不接收BPDU,选举时直接从堵塞状态转变为转发状态,不参与生成树的选举过程,默认情况下,交换机的所有端口均为非边缘端口,为避免生成生成树欺骗攻击,可以将交换

Merkle Tree 简介

Merkle 树(Merkle Tree)是一种树状数据结构,通常用于验证大规模数据集的完整性和一致性。它的名字来源于其发明者 Ralph Merkle。Merkle 树在密码学、分布式系统和区块链等领域得到广泛应用,尤其在区块链中,它用于验证交易和区块的完整性,确保数据不被篡改。 下面是 Merk

Trie字典

Trie树,又叫字典树,前缀树(Prefix Tree),单词查找树,是一种多叉树的结构. {"a","apple","appeal","appear","bee","beef","cat"} 深色表示接受态 关键字集合{"pool", "prize", "prepare", "preview",

算法学习笔记(15): Trie(字典树)

# Trie树 Trie(字典树)是一种用于实现字符串检索的多叉树。 Trie的每一个节点都可以通过 `c` 转移到下一层的一个节点。 > 我们可以看作可以通过某个字符转移到下一个字符串状态,直到转移到最终态为止。这是后话…… 我们以插入了字符串 `ab`,`aa`,`b` 三个字符串的Trie树为

算法学习笔记(21): 平衡树(二)

# 平衡树(二) > 平衡树(一)链接:[算法学习笔记(18): 平衡树(一) - jeefy - 博客园](https://www.cnblogs.com/jeefy/p/17204439.html) 本文中将讲述一下内容: - 可持久化Treap - 基于`Trie`的 *类* 平衡树(后文称之

算法学习笔记(25): 矩阵树定理

# 矩阵树定理 > 本文不作为教学向文章。 > > 比较好的文章参考: > > - [矩阵树-定理以及凯莱公式](https://zhuanlan.zhihu.com/p/593934554) > > - [【学习笔记】矩阵树定理(Matrix-Tree)_繁凡さん的博客-CSDN博客](https

VUE系列之性能优化--懒加载

一、懒加载的基本概念 懒加载是一种按需加载技术,即在用户需要时才加载相应的资源,而不是在页面初始加载时一次性加载所有资源。这样可以减少页面初始加载的资源量,提高页面加载速度和用户体验。 二、Vue 中的懒加载 在 Vue.js 中,懒加载主要用于路由组件的按需加载。Vue Router 提供了非常便

深入理解 Vue 3 组件通信

在 Vue 3 中,组件通信是一个关键的概念,它允许我们在组件之间传递数据和事件。本文将介绍几种常见的 Vue 3 组件通信方法,包括 props、emits、provide 和 inject、事件总线以及 Vuex 状态管理。 1. 使用 props 和 emits 进行父子组件通信 props

前端开发中的二分查找算法

在前端开发中,处理和搜索大量数据时,效率是一个关键因素。二分查找算法是一种高效的查找算法,适用于在有序数组中快速找到目标值。本文将详细介绍二分查找算法的基本原理、实现方法及其在前端开发中的应用。 什么是二分查找? 二分查找(Binary Search)是一种在有序数组中查找目标值的算法。它通过不断将

前端回流与重绘:概念及触发条件

在前端开发中,性能优化是一个永恒的话题。回流(Reflow)与重绘(Repaint)是两个重要的概念,它们直接影响着页面的渲染性能和用户体验。本文将详细介绍回流与重绘的概念、触发条件及其优化方法。 一、回流(Reflow)(重排) 1.1 概念 回流,又称重排(Reflow),是指当DOM的变化引起

前端开发-- Webpack 代码分割和懒加载技术

在现代前端开发中,优化应用性能是一个至关重要的任务。Webpack 作为一个强大的打包工具,为我们提供了代码分割和懒加载的功能,可以显著提升应用的加载速度和用户体验。本文将深入解析 Webpack 的代码分割和懒加载技术,帮助开发者更好地理解和应用这些技术。 什么是代码分割? 代码分割(Code S

探索贪心算法:解决优化问题的高效策略

贪心算法是一种在每一步选择中都采取当前最佳选择的算法,以期在整体上达到最优解。它广泛应用于各种优化问题,如最短路径、最小生成树、活动选择等。本文将介绍贪心算法的基本概念、特点、应用场景及其局限性。 贪心算法的基本概念 贪心算法的核心思想是局部最优策略,即在每一步选择中都选择当前看起来最优的选项,希望

洛谷官方题单--线段树

前言 发现线段树根本不会写,所以想要完成洛谷官方题单来稍微提升一下... 持续更新ing [ ] P3870 [TJOI2009] 开关 明确了写线段树要思考的几个点 1.如何update,即如何合并子节点的信息,这里就是直接将子节点的灯的数量相加即可 2.如何modify,即如何根据tag修改该节