摘要:
原题链接:https://www.luogu.com.cn/problem/P5076 题意解读:此题本质上是要实现一个二叉搜索树的功能。 解题思路: 从数据规模10^4来看,只要复杂度在n^2范围内基本上是可以通过的,下面给出两种做法: 1、有序数组法 对应5个操作的实现逻辑如下: 操作一:查x的 阅读全文
posted @ 2024-03-14 16:36
hackerchef
阅读(311)
评论(0)
推荐(0)
摘要:
原题链接:https://www.luogu.com.cn/problem/P1827 题意解读:已知二叉树的中序、前序遍历结果,求后序遍历结果。 解题思路: 已知中序、前序(或后序)遍历的结果,要求后序(或前序)遍历的结果,本质上就是借助于已知的前序(或后序)遍历结果寻找二叉树的根, 再根据根节点 阅读全文
posted @ 2024-03-14 10:43
hackerchef
阅读(156)
评论(0)
推荐(0)
摘要:
原题链接:https://www.luogu.com.cn/problem/P4913 题意解读:计算二叉树的深度 解题思路: 首先介绍二叉树的存储方式,对于本题,直接用数组模拟,数组的下标即节点号 struct node { int l, r; } tree[N]; tree[i].l存的是节点i 阅读全文
posted @ 2024-03-14 09:48
hackerchef
阅读(294)
评论(0)
推荐(0)
摘要:
原题链接:https://www.luogu.com.cn/problem/P4715 题意解读:计算亚军得主,注意能力值最高的肯定是冠军,但能力值第二高的不一定是亚军,因为有可能中途就遭遇冠军。 解题思路: 根据题意,两两比赛,一轮后再按顺序两两比赛,形如一棵二叉树,但解题其实用不到二叉树的数据结 阅读全文
posted @ 2024-03-13 16:18
hackerchef
阅读(140)
评论(0)
推荐(0)
摘要:
原题链接:https://www.luogu.com.cn/problem/P2234 题意解读:要计算每一天最小波动值的和,需要对每一天求最小波动值,再求和,如果暴力法,时间复杂度在1+2+3+......+32767≈5*10^8,可能会超时。 解题思路: 1、暴力法:由于本题测试数据比较水,实 阅读全文
posted @ 2024-03-13 09:48
hackerchef
阅读(94)
评论(0)
推荐(0)
摘要:
原题链接:https://www.luogu.com.cn/problem/P4387 题意解读:判断一组序列入栈后,出栈序列的合法性。 解题思路: 数据长度100000,直接模拟堆栈的入栈和出栈即可 遍历每一个入栈元素,依次入栈, 每一个元素入栈后,比较栈顶元素和出栈序列第一个, 如果相等,则出栈 阅读全文
posted @ 2024-03-12 17:42
hackerchef
阅读(176)
评论(0)
推荐(0)
摘要:
原题链接:https://www.luogu.com.cn/problem/P1241 题意解读:括号配对问题,直观上是堆栈的应用。关键的匹配策略是读懂该句:考察它与它左侧离它最近的未匹配的的左括号。 解题思路: 本题所需核心数据结构是堆栈,由于要实现从栈顶找到第一个未匹配的左括号,所以堆栈中只存所 阅读全文
posted @ 2024-03-12 11:53
hackerchef
阅读(158)
评论(0)
推荐(0)
摘要:
原题链接:https://www.luogu.com.cn/problem/P2058 题意解读:计算24小时时间窗口内不同国家的数量,是队列的典型应用。 解题思路: 本题需要用到两个关键的数据结构:队列、数组 队列用来保存24小时内到达的船的时间,数组用来保存24小时内每个国家有多少人 每到一只船 阅读全文
posted @ 2024-03-12 10:21
hackerchef
阅读(159)
评论(0)
推荐(0)
摘要:
原题链接:https://www.luogu.com.cn/problem/P1540 题意解读:本题模拟内存的调入调出,内存先入先出的特性就是队列。 解题思路: 本题需要两种数据结构:队列、数组 队列用来模拟内存的操作,数组充当hash表用于判断单词在内存是否存在 核心逻辑:对于每一个单词,如果内 阅读全文
posted @ 2024-03-12 09:45
hackerchef
阅读(144)
评论(0)
推荐(0)
摘要:
原题链接:https://www.luogu.com.cn/problem/P1160 题意解读:本题是双向链表的模拟题,要快速实现M个节点的删除,用数组模拟链表是最佳做法。 解题思路: 双向链表关键要实现好两个操作: void add(int k, int v); //在第k个节点后增加第v的号节 阅读全文
posted @ 2024-03-11 19:41
hackerchef
阅读(174)
评论(0)
推荐(0)
浙公网安备 33010602011771号