摘要: 快速排序即sort方法的手动实现 $1.$ 确定当前区间的左端点$l$,右端点$r$,并取$x=q[(l+r)/2]$ $2.$ 运用双指针调整区间,使得区间左半边的值都$<=x$,右半边区间的值都$>=x$ $3.$ 不断递归 #include <iostream> #include <algor 阅读全文
posted @ 2020-08-12 17:37 地球长大的赛亚人 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 题意:输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树。 常规的用递归方法,二叉树的遍历序列通过vector存出,这时候可以用map建立一个哈希表,方便找到根节点在中序遍历的位置从而分开左右子树。 求出左子树和右子树在序列中的区间范围,不断递归。 /** * Definition for a 阅读全文
posted @ 2020-08-10 23:28 地球长大的赛亚人 阅读(82) 评论(0) 推荐(0) 编辑
摘要: https://www.acwing.com/problem/content/239/ 并查集思路很平常,本题的坑点是数据范围很大,要先进行离散化。其中对于本题在离散化时不用保存原序列的大小,只需要保持一一对应即可,故用unordered_map进行离散化。 #include <cstring> # 阅读全文
posted @ 2020-08-09 14:26 地球长大的赛亚人 阅读(70) 评论(0) 推荐(0) 编辑
摘要: #并查集 并查集是一种可以动态维护若干个不重叠的集合,并支持合并与查询的数据结构,并查集包含如下两个基本操作。 $1$.get,查询一个元素属于哪一个集合。 $2$.merge,把两个集合合并成一个集合。 并查集的关键点是要定义一种合理有效的归属关系表示方法。采用一棵树形结构储存每个集合,树上的每个 阅读全文
posted @ 2020-08-09 10:46 地球长大的赛亚人 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 给定一颗二叉树,每个结点都有一个value值,每一层二叉树之间默认的距离是1,求一个点x,使得其余点到此点的路径最短(路径的定义:点与x之间的距离(层数之差)*该点的value) 运用结构体数组加vector存图,储存两点之间的路径关系和每个点的value值,枚举每一个点,用dfs求出其余点到该点的 阅读全文
posted @ 2020-08-09 00:40 地球长大的赛亚人 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 给定一个长度为 \(n+1\) 的数组 \(nums\),数组中所有的数均在 $1∼n$ 的范围内,其中 \(n≥1\)。 请找出数组中任意一个重复的数,但不能修改输入的数组。 样例:给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。 本题利用抽屉原理:n+1 阅读全文
posted @ 2020-08-05 13:32 地球长大的赛亚人 阅读(99) 评论(0) 推荐(0) 编辑
摘要: A. Even But Not Even 题意:给定一串数,可在不改变原有数字的顺序下删去任意个数数字,求能否得到数串不能被2整除,但每个数字之和相加可以被2整除。 分析:A题 想了好久 被样例误导 写了好久 冷静下来分析一下数串不能被2整除首先末尾必须是一个奇数,又由于每个数字之和相加可以被2整除 阅读全文
posted @ 2020-03-15 17:33 地球长大的赛亚人 阅读(105) 评论(0) 推荐(0) 编辑
摘要: A. Yet Another Tetris Problem 题意:俄罗斯方块 给你每一列的高度 每次只能竖着放尺寸2*1的长方形,问是否能全部消除 #include <iostream> #include <algorithm> using namespace std; const int N=11 阅读全文
posted @ 2020-03-13 11:01 地球长大的赛亚人 阅读(231) 评论(0) 推荐(0) 编辑
摘要: A. Even Subset Sum Problem 题意:找和是偶数的子集,没什么好说的,直接上代码。 #include <iostream> #include <algorithm> using namespace std; int n,x; int a[110]; int main() { i 阅读全文
posted @ 2020-03-08 12:17 地球长大的赛亚人 阅读(220) 评论(0) 推荐(0) 编辑
摘要: A. Game Shopping 题意:给定两个长度不同的数组,第一个数组里面的元素代表商品ai的价值,第二个数组里的元素代表钞票ci的价值。将从第一个商品往后买东西,如果钞票的金额大于商品的价值,则可以买,并且本张钞票花出无找零。问最多能买几个东西。很显然可以用双指针做。 #include <io 阅读全文
posted @ 2020-03-07 16:31 地球长大的赛亚人 阅读(147) 评论(0) 推荐(0) 编辑