摘要: 037.二叉树非递归遍历 用栈实现非递归遍历 时间复杂度O(n) 空间复杂度O(h) , h为树高 前序 leetcode 144 struct TreeNode{ int val; TreeNode*left; TreeNode*right; TreeNode(int x):val(x),left(nullptr),rig 阅读全文
posted @ 2026-01-07 19:43 射杀百头 阅读(6) 评论(0) 推荐(0)
摘要: 036.Miller-Rabin 素性测试 判断较大素数 模板检测 复杂度O(k(logn)^3) k为 p[] 的数量 #include<bits/stdc++.h> using namespace std; typedef __int128 LL; template<typename T>void read(T&x){ x=0;bool 阅读全文
posted @ 2026-01-06 22:38 射杀百头 阅读(7) 评论(0) 推荐(0)
摘要: 035.快速幂模板 模板 快速幂 luogu P1226 long long qpow(long long base,long long e){ long long ans=1; long long b=base; while(e){ if(e&1)ans*=b; b*=b; e>>=1; } return ans; 阅读全文
posted @ 2026-01-05 22:28 射杀百头 阅读(6) 评论(0) 推荐(0)
摘要: 034.进制转换 模板 支持负进制 luogu P1143 luogu P1017 #include<string> using namespace std; namespace X_to_Y{ char dtoc(int d){ if(d>9)return 'A'+d-10; return '0'+d; } int 阅读全文
posted @ 2026-01-04 12:45 射杀百头 阅读(10) 评论(0) 推荐(0)
摘要: 033.字典树 模板 luogu P8306 支持API: insert(word) 添加单词 search(word) 查询单词出现了几次 prefixNumber(pre) 查询前缀 deletd(word) 删除单词,若不存在则无事发生 clean() 初始化 下面是一个仅支持数字,大、小写英文字母的实现 # 阅读全文
posted @ 2026-01-03 14:12 射杀百头 阅读(6) 评论(0) 推荐(0)
摘要: 032.有序表之AVL树 模板 luogu P3369 luogu P5076 P5076需把INT_MIN换成-2147483647 支持API : add(num) 添加 key 为 num 的节点,自动维护平衡 remove(num) 删除key为num的节点,自动维护平衡,若不存在则无事发生 rank(num) 获取 阅读全文
posted @ 2026-01-02 19:48 射杀百头 阅读(6) 评论(0) 推荐(0)
摘要: 031.二叉树遍历问题 遍历框架 struct TreeNode{ int val; TreeNode*left; TreeNode*right; TreeNode():val(0),left(nullptr),right(nullptr){} TreeNode(int x):val(x),left(nullptr),ri 阅读全文
posted @ 2026-01-01 23:59 射杀百头 阅读(7) 评论(0) 推荐(0)
摘要: 030.Goodbye,2025.Hello,2026! #include<iostream> int main(){ std::cout<<"Goodbye,2025"<<std::endl; std::cout<<"Hello,2026!"<<std::endl; return 0; } 不知不觉已经在北邮生活快四个月了 How time flies 阅读全文
posted @ 2025-12-31 23:59 射杀百头 阅读(14) 评论(0) 推荐(0)
摘要: 029.二叉树任务调度 题目链接 结论 现在我们拿到二叉树的一个节点 单独完成当前节点耗时cur 左子树所有任务时间和为S1,最优并行后为T1 右子树所有任务时间和为S2,最优并行后为T2 那么限制左、右子树的任务执行总时间的因素只有两个: 两侧时间和的平均值 \(\frac{S1 + S2}{2}\) 两侧最优时间的最大 阅读全文
posted @ 2025-12-30 22:34 射杀百头 阅读(18) 评论(0) 推荐(0)
摘要: 028.快速排序与快速选择算法 快速排序就是二叉树的前序遍历 Quick Sort 二叉树前序遍历 先处理当前节点,再处理左右子树 void preorder(TreeNode*root){ if(root==nullptr){ return; } //前序位置 preorder(root->left); preorder(roo 阅读全文
posted @ 2025-12-29 10:56 射杀百头 阅读(33) 评论(0) 推荐(0)