06 2020 档案
摘要:一、技术总结 这里面主要有 二、参考代码 #include<iostream> #include<vector> #include<cmath> #include<algorithm> using namespace std; typedef long long LL; //const int ma
阅读全文
摘要:一、技术总结 一个数素数的判断函数 就是关于哈希表的冲突问题,使用平方探测法解决; 使用两个数组,一个用于当前数字存储哈希表中的下标,一个是用于记录是否可以插入进哈希表; 二、参考代码 #include<iostream> #include<cmath> #include<vector> using
阅读全文
摘要:一、技术总结 这一题主要学到了,进制转换如下: int len = 0; do{ d[len++] = n % radix;//转化成该进制,数组低位表示转换后进制的低位; n /= radix; }while(n != 0); int p = 1; for(int i = len - 1; i >
阅读全文
摘要:一、技术总结 这题是关于分数四则运算的题目,主要的关键点在于化简函数的编写,以及输出显示函数的编写; 化简函数的注意点一个是当分子为0的时候,记得将分母赋值为1,如果分子不为0,那么就使用gcd函数进行化简;在一个就是当分母出现负数的时候,为了输出方便要将分子分母的符号转化; 关于输出显示函数,一般
阅读全文
摘要:一、技术总结 关键点就一个最大公约数函数,一个化简函数,在加一个输出函数; 对于化简函数,首先如果分数为负数,那么得保证分子是负数,为了输出要求;在一个就是化简,如果分子等于0,那么要将分母赋值为1,如果不为零那么就要进行约分,即使用gcd函数找到最大公约数即可 再就是输出函数,这个要按照题目的具体
阅读全文
摘要:一、技术总结 分三种情况: 当 二、参考代码 #include<iostream> using namespace std; int main(){ int n, a = 1, ans = 0; int left, now, right; cin >> n; while(n / a != 0){ l
阅读全文
摘要:一、技术总结 水题 二、参考代码 #include<iostream> #include<vector> using namespace std; int main(){ int n, sum = 0; cin >> n; vector<int> v(n); for(int i = 0; i < n
阅读全文
摘要:一、技术总结 考查质数分解 一个是素数的判断,还有就是素数表的获取,再一个就是保存质数分解的结果 一个就是注意最后如果n不等于1,那么一定还有大于根号n的质因子。 二、参考代码 #include<iostream> #include<cmath> using namespace std; const
阅读全文
摘要:一、技术总结 这一题是关于堆的,主要学到的知识是使用深度遍历,遍历打印每一条路径,并且可以按照特定的顺序进行打印; 具体的dfs函数,对于堆而言,因为具备完全二叉树的特点,递归边界是index * 2 > n && index * 2 + 1, 同时会出现,按道理这时直接输出存储好的路径即可,但是因
阅读全文
摘要:一、技术总结 这一题看起来好像要使用图的知识,其实不必,只需要将图存储下来即可,然后遍历每条边所对应的两个点看颜色是否相同,如果相同则不符合题目要求输出No,如果符合要求那么输出颜色的数量即可。 涉及到vector存储图的信息,以及set存储颜色的数量; 二、参考代码 #include<iostre
阅读全文
摘要:一、技术总结 本题没有数据结构的具体知识,但是考查逻辑,也就按照题目中的要求进行运算最后输出结果; 但是处理的方式显得很重要,一个要点是,对于对于这种题目最好是将结果全部储存,然后再按需进行重新查询; 如果存在超时可以使用unordered_map;同时在编写排序算法的时候,cmp传参可以使用引用,
阅读全文
摘要:一、技术总结 学会使用substr(start, num);函数,同时注意题目中的要求,例如可能会出现按照格式输出0004,就不能够用%d格式输出,即使使用也需要注意。 同时stoi函数。 二、参考代码 #include<iostream> #include<string> using namesp
阅读全文
摘要:一、技术总结 二、参考代码 #include <iostream> #include <vector> #include <map> using namespace std; map<int, int> pos; vector<int> in, pre; void lca(int inl, int
阅读全文
摘要:一、技术总结 这一题是考查旅行商问题,但不是传统意义上的遍历图,然后找最短路径之类的; 首先应该明确有四类,一类是不能够走通的,也就是在所给路径中,有相邻的两点存在不通的情况; 再就是所给路径走得通,但是不是旅行商问题,也就是第一个城市与最后一个城市不是同一个或者没有走完所有的城市; 然后就是旅行商
阅读全文
摘要:一、技术总结 这一题主要学习到两个知识点,一个是stoi函数的使用,之前已经讲过了,可以将一个字符串转化为10进制的数字; 还有就是字符串string中insert函数的使用,可以str.insert(0, num, '0');意思是在下标为0处插入num个字符‘0’; 还有就是使用dowhile;
阅读全文
摘要:一、技术总结 这一题样例也要看清楚,不然想当然也会出错。 是直接使用map<int, int>进行数据存储也就是映射,以为是一对一的关系,其实发现是多对多的关系;可以使用map<int, vector> mp,进行存储; 思路大致是首先使用mp存储好对应关系,然后再使用vector存储要运输的货物,
阅读全文
摘要:一、技术总结 这一题考查的是逻辑题 主要题意是,给出一群人中,只有两个狼人,其余都是好人,且只有两个说谎的人,一个在两人中,一个在好人中,一个是狼人。要我们判断满足要求下,输出狼人; 使用数组v,存储每个人说说话情况; 解决方案是假设法,首先假设两个狼人的下标是i, j,然后i在1-n中找,那么剩下
阅读全文
摘要:一、技术总结 这一题是关于堆排序的问题。 先理解啥是堆,也就是一棵完全二叉树,但是还有附加要求,如果满足每个结点的左右子树的结点值都小于自己称为大顶堆;如果是每个结点的左右子树值都大于自己,称为小顶堆。 所以解决该问题可以应用完全二叉树的一些知识点。 这一题是给出每棵树的层序遍历,这是满足结点下标是
阅读全文
摘要:一、技术总结 本题为哈希映射的相关题目 因为一般的哈希表都是使用素数tsize进行作为最大空间,所需需要先编写一个素数判断函数,关键点是从i = 2开始遍历,只需要遍历到i * ii ⇐ x即可; 哈希表本质是用最大的存储空间tsize取余,进行存储,但是会可能出现相同的余数,那么会发生冲突,这时就
阅读全文
摘要:一、技术总结 即判断给出一串数字中缺少的最小正整数 直接可以遍历判断n个数字中是否在一串数字中是否出现,如果没有直接输出 但是会出现一种情况,是恰好给出的数字是1~n,这是需要再判断一下了遍历的次数是否等于n,如果是的话直接输出n+1 二、参考代码 #include<iostream> #inclu
阅读全文
摘要:一、技术总结 首先这一题是关于拓扑排序的,必须明确啥是拓扑排序,也就是对于有向无环图,能够生成拓扑序列;使得该序列中任意两个顶点u、v,如果存在u->v,那么在序列中u一定在v的前面。 然后这一题是给出一个有向无环图,要我们判断所给的序列是否为拓扑排序。 无论是判断是拓扑序列还是该图是否为有向无环图
阅读全文
摘要:一、技术总结 题目的意思就是找到,给出两个结点的最小的祖先结点,其实这题关键就是,它是一棵搜索二叉树,我们只要发现有个结点是在给出的两个结点之间,那么这个结点就一定是最小的最先结点。 使用map< int , bool > mp,用于接收二叉树的结点,用于遍历找到那个加在所给结点的祖先结点。;最后就
阅读全文
摘要:一、技术总结 这一题就是判断无向图中一定子集是否为团(clique),是否为最大团,就是没法再选出一个结点构成新的团,团中的任意两个顶点之间可以直接接通。 然后这一题学到的东西有,使用hash用于判断存储判断之外的结点。 同时vector如果使用&进行赋值,应该进行初始化,也就是这样vector <
阅读全文
摘要:一、技术总结 二、参考代码 #include<iostream> #include<vector> #include<algorithm> #include<set> #include<map> using namespace std; struct node_i{ string name; dou
阅读全文
摘要:一、技术总结 就是读懂题目即可,具体意思判断连续数字的个数,并且按数字加个数组成新的数字。 使用两个vector容器,一个是装临时生成的数字串。 首先将D插入v容器,然后开始进行轮数的遍历,这里需要注意当插入的时候,已经算第一轮了,所以在遍历的时候进行index-1轮即可;然后对于当前轮中数字判断连
阅读全文
摘要:一、技术总结 学会使用unordered_map,可以减少存储空间,同时如果是两个id号之间有关系,可以直接让他们拼接起来。使用map<int, bool>来表示他们直接是否有关系; 学会使用stoi函数,能够将字符串直接转化为默认是十进制的数字。 最后就是读懂题目,如果A喜欢B,则需要寻找与A同性
阅读全文
摘要:一、技术总结 已知包含中序遍历,在随便知道先序或是后序,遍历都是能够确定二叉树,create函数模板要记住。不要忘记root->data = in[k]赋值。递归边界,返回的是return NULL。 同时,就是后序遍历了,return没有的。 二、参考代码 #include<iostream> #
阅读全文
摘要:一、技术总结 这一题主要是学会了使用**v.push_back(node{id, score, -1, -1, 0})**这种方式的赋值插入。 同时,也知道如果四舍五入向上取整,应该在int型,最后加上0.5。 还有对于string类型的输出,如果想使用printf进行输出,可以使用函数c_str(
阅读全文
摘要:一、技术总结 这一题的技术要点就是字符串反转函数**reverse(s.begin(), s.end())**的使用,可以将字符颠倒顺序。 还有就是关于数字字符串,以及字符的差值计算,两个字符串进行数值加法,如何操作,就是单个字符进行减法可以直接得出字符见相差的数,同时,也可以使用+号进行拼接操作,
阅读全文
摘要:一、直接代码演示吧 #include<iostream> #include<algorithm> using namespace std; int main(){ char a = '9'; char b = '3'; string s1 = "67"; string s2 = "3"; strin
阅读全文
摘要:一、技术总结 首先说明一下,这一题只是简单的判断是否为红黑树,并没有详细的用到红黑树中的插入、删除等复杂情况。如果想学习可以参考这篇博客:https://www.jianshu.com/p/e136ec79235c 它是在搜索树以及平衡二叉树上发展而来的,但是又不完全是平衡二叉树,因为红黑树对高度差
阅读全文
摘要:一、技术总结 题意为,给出一个图,是按边给出,给出每条边两边的顶点id号,然后再给出k个顶点集合,要我们依次判断是否每条边的两个顶点至少有一个在集合中,那么则称该顶点集合为Vertex Cover,同时输出Yes,否则输出No。 使用一个数组存储每条边的顶点信息,用于判断是否每条边的顶点中至少有一个
阅读全文
摘要:一、技术总结 首先题目的意思得读懂,给出一串数字,他们是有顺序的,现在要求将数字分成几种情况,负数放在最前面,按原来顺序,然后数给定的0到K,放出来,在将大于K的放在最后,记住只是移位,没有将顺序打乱。 基于此,我们可以首先使用一个node结构体用于存储每个结点的id号,数值信息,以及下一个结点编号
阅读全文
摘要:一、技术总结 题意是理解上给定义一个数字m(假设有4位),让你分割成两块数字A(前两位)和B(后两位),然后判断m/(A*B)能否整除,如果能输出Yes否则输出No。 两个点,一个数字怎么分割,一个数字判断。 分割首先判断出数字的位数,然后再使用取余和整除来得到A和B;再就是判断了,这里有个地方需要
阅读全文
摘要:一、技术总结 题目意思是,给定N条地铁线,然后可能线路与线路之间会有转换站,给出,出发点和目的点,要求输出乘坐的站数以及在每条线路上的转换点,包括出发点和目的点。具体可以查看例子。 我们使用vector用来存储地图,unordered_map<int, int>类型的line来进行存储站点与站点之间
阅读全文
摘要:一、技术总结 这题是关于二叉树,使用中序遍历的方法进行输出一个算式,要加括号,最外层不用加。 存储使用node结构体,数值跟左右子树;同时使用have数组用于判断根结点开始的位置。 使用dfs进行深度遍历:会出现四种情况(但是有一种不会出现,即左子树不空右子树为空的情况): 左右子树都为空 左空右不
阅读全文
摘要:一、技术总结 这一题,有一个没有接触到的知识点,也就是运算符重载。 这里的注意点是,每次将结果存储在set容器中,结点具备两个属性一个是值,还有一个是次数。这里重载了**<**号,是因为set容器里面是自动按照小于号将数值进行排序。 然后再对结果进行输出的时候,首先是将将结果输出,然后再在set容器
阅读全文
摘要:一、技术总结 这一题是关于逻辑题。即给出一个N*N的方阵,里面给出N个点,每个点不能再同一行或则同一列,也不能够是对角线上出现。 至于对角线这个问题是,行间距之差如果等于所在行数值差,那么就代表在对象线上面。 二、参考代码 #include<bits/stdc++.h> using namespac
阅读全文
摘要:一、技术总结 这一题是已知中序和后序遍历的结果,然后确定二叉树,然后将这棵树使用层序遍历输出,但是这个层序遍历输出有要求,首先将根结点输出,然后下一层从左到右遍历,再下一层从右到左遍历输出。 首先创建结点,元素应该包括层数;然后编写create函数,该函数的结束条件是,不管是先序还是后序,都是左边结
阅读全文
摘要:一、resize()函数使用方法 #include<bits/stdc++.h> using namespace std; vector<int> v1; vector<bool> v2; vector<vector<int> > v3; int main(){ int n = 10; v1.res
阅读全文
摘要:一、技术总结 这一题是关于欧拉回路的,欧拉回路是指,在一个连通图中,每个结点的出度或则入度是偶数,那么这就是欧拉回路,如果只存在两个结点是奇数,那么称为半欧拉回路。 所以这一题的关键就会统计每个结点的度的数量。 然后判断输出即可。 首先使用一个邻接表用于记录图,然后再用bool类型的vector记录
阅读全文
摘要:一、技术总结 题目的意思就是给出n段绳子,然后每次选取两段进行打结合成一段绳子(然后继续参与打结),但是会使得各自的长度减半。 显然可以知道,越长的绳子越往后进行打结,最终得到的长度越长,输出结果为取整,向下取整。 最后取整使用,强制类型转换。 二、参考代码 #include<iostream> #
阅读全文
摘要:一、技术总结 这一题就是简单按题目要求变成输出即可 就是抽奖,给出抽奖人数,然后间隔人数,以及开始中奖人的下标;如果参与抽奖的人转发不止一次,中奖后,再次中奖跳过该人,继续抽,如果开始抽奖人的下标大于参与抽奖的人数,输出Keep going... 还有一点需要注意的是,使用string类型的变量,只
阅读全文
摘要:一、技术总结 这一题是考查平衡二叉树的内容,算是内容比较多了了。包括结构体中包含高度,还有就是创建newNode函数、getH函数、高度更新UpdateH函数、左旋右旋函数、平衡因子获取函数getBF、再就是平衡二叉树的插入函数insert、最后就是利用insert函数的创建函数Create。 有几
阅读全文
摘要:一、技术总结 题目要求是给出一条路径,在所给图中是否为哈密尔顿回路。 哈密尔顿环的特点是,每个每个顶点都经过且仅经过一次,并且最后回到起点。 所以,根据题意设置flag1和flag2分别用于判断,flag1用于判断结点是否多走、少走、或走成环;flag2判断这条路能不能走通;当flag1和flag2
阅读全文
摘要:一、技术总结 本题就是简单的逻辑题,把题目理解就行,给出n组情侣或夫妻,然后再给出m个人,选出不包含组的里的人,如果在组里面,但是查询名单里面没有他的伴侣,他也算单身。 同时,找出后还要求按照编号升序打印。 接下来就是如何找出在场单身人士了,我们可以用一个map类型的用于标记各自的伴侣,方便查询使用
阅读全文
摘要:一、技术总结 把题目读懂,简单理解就是看给出的数字中有几个不同的friend ID, 并且把他们从小到大输出。 set容器可以完美实现这一功能。 二、参考代码 #include<iostream> #include<set> using namespace std; const int MAXV =
阅读全文
摘要:一、技术总结 这里题目意思就是,知道二叉树的前序遍历和后序遍历怎么知道二叉树的结构,因为我们知道只有知道了中序遍历才可以唯一确定二叉树,所以以上的情况出来的结果可能是不唯一的。 那么我们怎么去确定它是否唯一是一个值得思考的点,我们如果发现先序遍历抛开最开始的根结点后的第一个结点(左子树或则是右子树的
阅读全文

浙公网安备 33010602011771号