- 博客(5)
- 收藏
- 关注
原创 (极简写法)7-1 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数
代码解释:先序序列有一个很好的性质,若一段序列为一颗树的先序序列,且首位为x,则该树的根就是x,左子树的根是x+1,我们递归处理左子树,直到有一个根的左右儿子都为空(本题中空儿子为’#‘),返回处理的最末位置,这个最末位置的下一位就是另一颗子树,用同样的手法递归处理右子树即可。第三行是二叉树的后序遍历序列;提示:一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。对于给定的二叉树,输出其先序序列、中序序列、后序序列并输出叶子结点数。二叉树的先序遍历序列。
2025-03-24 11:44:12
362
原创 L2-042 老板的作息表(数组实现)
并且任意两个给出的时间区间最多只在一个端点有重合,没有区间重叠的情况。看这道题很多题解用了排序或者本身有序的数据结构,故此分享一种简单的差分解法,思想是将时间转化为一个数,时间复杂度为一个较大的常数(24 * 60 * 60)新浪微博上有人发了某老板的作息时间表,表示其每天 4:30 就起床了。按照时间顺序列出时间表中没有出现的区间,每个区间占一行,格式与输入相同。输入第一行给出一个正整数 N,为作息表上列出的时间段的个数。本题就请你编写程序,检查任意一张时间表,找出其中没写出来的时间段。
2025-03-10 19:51:11
334
原创 L2-3 密码锁(校赛补题)
没做出来的题之一,观察值域很容易想到用值域来转移,通过暴力枚举前缀最小值可以做到O(10 * 10 * n) 的复杂度,但暴力枚举前缀最小值的部分可以用一个数组优化掉,这里贴上O(10 * n)的优化代码。由于Chocola记性很不好,他将密码锁设置为任意单峰序列即可打开,具体为:a_1 ≤ ⋯ ≤ a_i ≥ a_i+1 ≥ ⋯ ≥ a_n (1 <= i <= n)Chocola有一个拨动式密码锁,这把锁从左至右有 n 位数,组成了一个序列 a,其中第 i 位数为 a_i。一个整数,为最少要拨动几下。
2025-03-02 22:50:20
227
原创 L2-4 讨伐(校赛补题)
出题代师 jiangh 在出校赛时犯了一个致命错误,硬控 Chocola 半小时。对此,cofe 响应号召决定出征讨伐 jiangh。校赛结束之际,jiangh 连夜逃窜。总共有 n 个城市,m 条双向道路,第 i 个城市拥有权值 c_i。cofe 在城市 1,jiangh 已经逃到了城市 n,并以为逃出了生天,之后不再行动。cofe 经过第 i 条道路需要花费 w_i 天时间,为加快讨伐速度,Marigold 出手帮助,当 cofe 在城市 a 时,可以花费 c_a 天时间空运到城市 b,当且仅当城市
2025-03-02 22:37:56
259
原创 L2-002 链表去重(map实现) 带注释
给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。
2025-03-02 12:05:23
253
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人