1、数组与链表 我们至少可以通过两种结构来存储数据 数组 优点: 存取速度快 缺点: 需要一个连续的很大的内存 插入和删除元素的效率很低 链表 专业术语: 首节点 存放第一个有效数据的节点 尾节点 存放最后一个有效数据的节点 头结点 头结点的数据类型和首节点的类型是一摸一样的 头结点是首节点前面的那 ...
分类:
其他好文 时间:
2020-04-06 19:05:55
阅读次数:
69
关于拓扑排序,基础图论中可以说是比较常见的题型,对于一些存在明显递推顺序的图论题目例如食物链计数,对于每一个结点存在一个明显的递推$f[k] = \sum(f[i])$ $f[i]$为与它连边,并且从图形上说在它上面的点的方案数,我们肯定不能直接去利用它“上面的点”的方案数,这时候我们需要一定的顺序 ...
分类:
编程语言 时间:
2020-04-06 19:03:00
阅读次数:
62
链表的排序有很多方式,这里记录一下归并排序,关键点2个: 归并排序的过程和快慢指针法找中间结点,直接上代码。 class Solution { public: ListNode* sortList(ListNode* head) { if (!head || !head->next) return ...
分类:
编程语言 时间:
2020-04-06 17:33:04
阅读次数:
92
单链表的基本操作: 1、单链表反转 2、链表中环的检测 3、两个有序链表的合并 4、删除倒数第K个结点 5、求链表的中间结点 编写链表代码的注意事项: 1、如果链表为空时,代码是否能正常工作? 2、如果链表只包含一个结点时,代码是否能正常工作? 3、如果链表只包含两个结点时,代码是否能正常工作? 4 ...
分类:
其他好文 时间:
2020-04-06 17:15:56
阅读次数:
120
之前第5节课留了个疑问,是关于“时间t被安排进R”的时间复杂度能不能为Ο(log2n)?”和BST时间复杂度Ο(h)的关系。第6节对此继续了深入的探讨。首先我们知道BST的h是指树的高,即从根到叶子结点最长路径的长度。但由于树结构不同平衡情况,高h的结果也不一样,如下图所示: 一、结点的高 由此可以 ...
分类:
编程语言 时间:
2020-04-06 15:25:51
阅读次数:
72
给一棵 $m$ 个结点的无根树,你可以选择一个度数大于 $1$ 的结点作为根,然后给一些结点着以黑色或白色。方案应保证根结点到每个叶子的简单路径上都至少包含一个有色结点。 对于每个叶结点 $u$ ,定义 $c[u]$ 为从根结点从 $u$ 的简单路径上最后一个有色结点的颜色。给出每个 $c[u]$ ...
分类:
其他好文 时间:
2020-04-06 15:18:56
阅读次数:
56
@[双连通分量] 题意: 有一个 n 个点 m 条边的无向图,问至少添加几条边,能让该图任意缺少一条边后还能相互连通。 双连通分量定义: 在无向连通图中,如果删除该图的任何一个结点都不能改变该图的连通性,则该图为双连通的无向图。一个连通的无向图是双连通的,当且仅当它没有关节点(这里面节点可换成边:分 ...
分类:
其他好文 时间:
2020-04-06 11:45:21
阅读次数:
62
首先转化一波: 对于1操作,我们求原图的生成树,然后对于每条非树边记下它和树边形成的环,这样的操作共有 $m-n+1$ 个; 对于2操作,我们考虑对于 $n$ 个结点,把和这个结点相连的边状态反转。 不难发现任何操作序列都可以拆成这 $m+1$ 个操作,且显然每个操作最多进行一次,所以只用考虑这 $ ...
分类:
其他好文 时间:
2020-04-06 11:39:59
阅读次数:
59
1.什么是链表 [1]. 链表是一种在物理存储单元上非连续的的存储结构; [2]. 链表的数据单元分为:数据域(data:存储节点的数据信息)和指针域(next:存储下/上个节点的地址); [3]. 链表可以分为:带头结点的链表和不带头结点的链表; [4]. 基本链表分类: (1)单链表 (2)循环 ...
分类:
其他好文 时间:
2020-04-05 22:22:32
阅读次数:
68
题目描述: 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(val ...
分类:
其他好文 时间:
2020-04-05 20:08:42
阅读次数:
79