![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer练习
文章平均质量分 66
一个学数学的程序媛
要美要酷的学生党一枚
展开
-
python_ACM模式《剑指offer刷题》二叉树3
因为哈希表my_dict存储了中序遍历节点与index的映射关系,也就是通过my_dict,可以找到某棵树(子树)的根节点,也就是找到左右子树在中序遍历中的分界线。因此要确定一个树的左右子树,只需要前序遍历中(这里为什么是前序遍历的,因为只有通过前序遍历才能得到root)root的index,中序遍历的左右边界left的index和right的index(这里因为只要root,就可以通过中序遍历得到在中序中root的index,这样再结合left和right的index,但是其思路与思路一就不同了。原创 2024-02-25 00:54:49 · 848 阅读 · 0 评论 -
python_ACM模式《剑指offer刷题》二叉树2
面试官有可能问到:如果你需要频繁地查找第k小的值,你将如何优化算法?(见思路三)原创 2024-02-07 09:23:18 · 673 阅读 · 0 评论 -
python_ACM模式《剑指offer刷题》二叉树1
1. 询问是否可以使用双端队列 (看后面思路就可知为什么要问这个)原创 2024-02-03 18:09:50 · 427 阅读 · 0 评论 -
python_ACM模式《剑指offer刷题》链表4
判断环是否存在:设定一快一慢指针,均从头节点出发,快指针一次走两步,慢指针一次走一步。若无环,则快指针会先到达空,返回False表示无环;原创 2024-02-02 09:22:19 · 390 阅读 · 0 评论 -
python_ACM模式《剑指offer刷题》链表3
注意:剑指offer上对这道题目的描述是给定的删除节点是节点指针。这表明这道题可以用时间复杂度为O(1)的方式解决。而leetcode上对类似本题的描述是:给定,这决定了本题时间复杂度必然至少为O(N)。因为必定要从头遍历链表。原创 2024-01-28 16:41:49 · 338 阅读 · 0 评论 -
python_ACM模式《剑指offer刷题》链表2
说人话就是:上图中第一步构建完后就是上图,可以看到新链表节点(A',B',C',D',...)是没有random指针的(random指针为None), 这时可通过其前一个节点帮助找其复制后的random节点,例如。1. 暴力解法 → 第一次遍历原链表构建一个复制了next的新链表,第二次遍历原链表,对每个原链表的节点的random从头寻找,同时新链表也同步寻找,即可找到复制链表的random。在第一次遍历原链表时存储(原链表节点,新链表节点)的映射关系;实现时复O(N),空复O(1)。原创 2024-01-28 11:24:29 · 427 阅读 · 0 评论 -
python_ACM模式《剑指offer刷题》链表1
采用递归的思想 注意是递归到最后一个元素才开始打印 即要先写递归 后写打印代码。2. 想要实现先遍历后输出,即先进后出,因此可借助栈结构。3. 可用隐式的栈结构,递归来实现。1. 翻转链表,再遍历链表打印。原创 2024-01-21 18:25:20 · 531 阅读 · 0 评论