文章分类 - 数据结构
米奇妙妙屋,领略数据结构的奇妙
摘要:二叉搜索树——所有节点满足:左<根<右。 节点定义: struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(
阅读全文
摘要:原题,如图所示,要求给定一个二叉树的根节点,验证是否对称 节点定义: struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} T
阅读全文
摘要:许久没有用到二叉树,也是有些生疏了,虽然写递归没问题,但迭代还是有点难度。 统一节点定义: struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nu
阅读全文
摘要:《我是真的不熟练写链表的操作》 对于正常的迭代我能写,但是也写的非常之抠脑袋(慢慢思考)。 链表部分定义就单独放了: struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} ListNode(i
阅读全文
摘要:讲真,自学习链表以后,都是认为链表很好用,只是写着麻烦,而且容易写错 于是乎,一直以来都是尽量避免用链表的,虽然麻烦,但是还是会写。 今天刷题遇到波操作刷新了我写链表的mode,简直太帅了。 以前我写代码,比如合并两有序链表是这样的: struct ListNode { int val; ListN
阅读全文
摘要:复习又学习了两遍。 Manacher讲究以线性时间复杂度解决寻找字符串中的最长回文串。 1.将字符串预处理,统一了奇数偶数长度的字符串——在字符串中给字符添加分隔符。 这里是将s处理后得到S字符串。 void init(string s) { S[0] = '@'; int l = s.length
阅读全文
摘要:U1S1,学了那么久的KMP至今不理解, 每自往思,三顾谷歌百度之中,咨询以当前之急,似懂非懂,遂许粘贴以瞎改。 后值反思,亡羊补牢。 然后凭着以前学过用过的基础,深度复习一遍,想不到竟如此简单 也就几个步骤就可以理解了, 假设: 母串为A,使用遍历变量i,子串为B,使用遍历变量j 1. 以暴力匹配
阅读全文
摘要:老久没写博客了,跟一波风。 去年暑假集训的时候学的字典树,ac自动机什么的,用的不是很多,该忘还是得忘,毕竟属于数据结构(我也想全面developing啊),我专精的图论有空再发嘛 寒假集训开始,打算先复习一下以前学的各种算法,然后再去专研图论的东西(学了一堆,脑子里面却已经忘得零零散散,再去学新东
阅读全文