字典树
算法引入
字典树 Trie
字典树, 顾名思义, 就是像字典一样的书.
平时查单词, 比如 abandon, 你会怎么查?
大概是先找到 'a' 这个字母所在的范围, 再查 'b' 的范围, 以此类推, 一个单词就被查找到了.
字典树亦是如此. 先放一张图.
可以发现, 字典树用边(点)来代替字母, 从根节点到某一节点的路径就组成了一个单词.
这点很好理解, 在每次插入一个单词的时候, 有时需要记录一些信息, 例如结尾位置... 因题而异.
01-Trie
那什么又是 01-Trie 呢?
01-Trie 就是将数的二进制看成字符串, 仿照字典树建立一颗只有 0, 1 的树.
建立了 01-Trie, 我们就可以执行一些有关于异或的操作.
维护异或和
01-Trie 可以用来维护一些数字的异或和, 支持修改(删除 + 重新插入), 以及全局 + 1.
如果需要维护异或和, 那么要按值从低位到高位建立 Trie.
维护异或和, 只需要知道某一位上 0 和 1 个数的奇偶性即可,
即对于 1, 只有这一位上 1 的个数为奇数时, 这一位才是 1, 所以并不需要知道 Trie 维护了哪些数字.
参考.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现