随笔分类 -  Data structure

摘要:给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 [1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 阅读全文
posted @ 2020-12-19 13:53 SteveYu 阅读(179) 评论(0) 推荐(0)
摘要:N皇后问题,我们在解决N皇后问题的时候,采用搜索的方法,dg记录的是左对角线的截距,udg记录的是右对角线的截距。之后便可以进行dfs进行求解了 #include <iostream> using namespace std; #define N 20 int n; bool col[N], dg[ 阅读全文
posted @ 2020-08-15 02:59 SteveYu 阅读(192) 评论(0) 推荐(1)
摘要:逆序对板子,我们在求逆序的时候,仅仅需要进行在归并排序上加上 mid - i + 1即可 #include <iostream> using namespace std; typedef long long LL; const int N = 100010; int n, q[N], tmp[N]; 阅读全文
posted @ 2020-08-15 01:58 SteveYu 阅读(300) 评论(0) 推荐(0)
摘要:归并排序原理如下: 我们首先进行对半划分,我们选择中间那个数字,之后把左右两个数组进行按位比较,组成一个新数组,之后再放回去。 紧接着进行递归。 分析复杂度分析,推导详见快排,原理差不多,复杂度O(n logn),但是快速排序是不稳定的排序,而归并排序是一个稳定的排序。 int tmp[N]; vo 阅读全文
posted @ 2020-08-15 00:37 SteveYu 阅读(191) 评论(0) 推荐(0)
摘要:快速选择原理如下,选择第k大的数字: 我们在快速选择的时候,也同样用了划分的思想,随机选择一个中轴,双指针i, j,指针i从左往右扫描,指针j从右往左扫描,如果i < j 则进行交换,并且继续循环,直到遇到中轴,这时候我们的i和j均为中轴(理由:因为i,j相等),如果数字在中轴的左边,则向左递归,如 阅读全文
posted @ 2020-08-15 00:22 SteveYu 阅读(437) 评论(0) 推荐(0)
摘要:快速排序原理如下: 我们在排序的时候,用到了划分的思想,随机选择一个中轴,双指针i, j,指针i从左往右扫描,指针j从右往左扫描,如果i < j 则进行交换,并且继续循环,直到遇到中轴,这时候我们的i和j均为中轴(理由:因为i,j相等)。我们在中轴左右递归,假设递归到了最后,也就交换了最后两个数。 阅读全文
posted @ 2020-08-15 00:05 SteveYu 阅读(1315) 评论(0) 推荐(0)
摘要:⛵️PAT总复习 ​ 这篇文章是关于一个PAT的总复习,整理以备复习参考。可能包含不全,我列出了一些易错点 🏖1.多项式 甲级1002.A+B for Polynomials题,多项式中,个人认为,多项式用最快的方法就是map进行存储,然后进行依次打印。(1009.Product of Polyn 阅读全文
posted @ 2020-07-22 07:10 SteveYu 阅读(652) 评论(2) 推荐(1)
摘要:以数据结构算法 7-11 进行解释 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。 输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接 阅读全文
posted @ 2020-06-10 01:54 SteveYu 阅读(298) 评论(0) 推荐(0)
摘要:dijkstra和dijkstra堆优化模板 之前QAQ一直没有准备堆优化模板,本例以PAT A1003为例,整理dijkstra和dijkstra堆优化模板 Dijkstra 我们可以发现该篇幅找最小值部分是使用量一个for循环 #include <iostream> #include <algo 阅读全文
posted @ 2020-06-09 18:53 SteveYu 阅读(318) 评论(0) 推荐(0)
摘要:P1364 医院设置 题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口。圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为 11。如上图中,若医院建在1 处,则距离和 =4+12+2\times20+2\ti 阅读全文
posted @ 2020-06-09 17:24 SteveYu 阅读(148) 评论(0) 推荐(0)
摘要:P5076 【深基16.例7】普通二叉树(简化版) 题目描述 您需要写一种数据结构,来维护一些数( 都是 109109 以内的数字)的集合,最开始时集合是空的。其中需要提供以下操作,操作次数 qq 不超过 104104: 查询 xx 数的排名(排名定义为比当前数小的数的个数 +1+1。若有多个相同的 阅读全文
posted @ 2020-06-09 16:25 SteveYu 阅读(352) 评论(0) 推荐(0)
摘要:P1827 [USACO3.4]美国血统 American Heritage 题目描述 农夫约翰非常认真地对待他的奶牛们的血统。然而他不是一个真正优秀的记帐员。他把他的奶牛 们的家谱作成二叉树,并且把二叉树以更线性的“树的中序遍历”和“树的前序遍历”的符号加以记录而 不是用图形的方法。 你的任务是在 阅读全文
posted @ 2020-06-05 19:58 SteveYu 阅读(621) 评论(0) 推荐(0)
摘要:P4913 【深基16.例3】二叉树深度 题目描述 给出每个节点的两个儿子节点,建立一棵二叉树(根节点为 11),如果是叶子节点,则输入0 0。建好树后希望知道这棵二叉树的深度。二叉树的深度是指从根节点到叶子结点时,最多经过了几层。 最多有 10^6106 个结点。 输入格式 无 输出格式 无 输入 阅读全文
posted @ 2020-06-05 19:45 SteveYu 阅读(501) 评论(0) 推荐(0)
摘要:题目描述 有 2^n(n\le7)2n(n≤7) 个国家参加世界杯决赛圈且进入淘汰赛环节。我经知道各个国家的能力值,且都不相等。能力值高的国家和能力值低的国家踢比赛时高者获胜。1 号国家和 2 号国家踢一场比赛,胜者晋级。3 号国家和 4 号国家也踢一场,胜者晋级……晋级后的国家用相同的方法继续完成 阅读全文
posted @ 2020-06-05 19:30 SteveYu 阅读(281) 评论(0) 推荐(1)
摘要:4种建树问题 前中建树 先序后序 阅读全文
posted @ 2020-05-01 16:14 SteveYu 阅读(243) 评论(0) 推荐(0)
摘要:群友那边的问题总结卡特兰数: N个元素入栈出栈次序。 N个元素的二叉树构成。 凸N变形三角形的划分,都是卡特兰数。 $$ \frac{1}{n + 1}C_{2n}^n $$ 阅读全文
posted @ 2020-04-18 13:30 SteveYu 阅读(135) 评论(0) 推荐(0)
摘要:```c // lca_bst node *lca_bst(node *n, node *p, node *q) { if((n->val - p->val) * (n->val - q->val) val val && n->val val) return lca_bst(n->right, p, q); else return lca_bst(n->left, p ,q); } // lca_ 阅读全文
posted @ 2020-04-11 00:22 SteveYu 阅读(261) 评论(0) 推荐(0)
摘要:多谢软院群的小韩和费马的鼎力相助 阅读全文
posted @ 2020-04-09 01:42 SteveYu 阅读(170) 评论(0) 推荐(0)
摘要:``` #include "iostream" using namespace std; struct node { int val; node *left, *right; node(int v):val(v), left(NULL), right(NULL){} } *root = NULL; int level[] = {1, 2, 3, 4, 5}; int in[] = {4, 2, 1 阅读全文
posted @ 2020-04-08 15:48 SteveYu 阅读(237) 评论(0) 推荐(0)
摘要:![](https://img2020.cnblogs.com/blog/1449595/202003/1449595-20200323132859838-1321698790.png)```cpp#include "iostream"using namespace std;struct node { int val; node *next; node(int v): val(v... 阅读全文
posted @ 2020-03-23 13:51 SteveYu 阅读(141) 评论(0) 推荐(0)