1112
字符串处理,求连续相同的字母,用a[i]和a[i-1]判断和计数,注意当cnt==k时要多往前跳一格。标记好的键。输出的时候遍历整个串,坏的键就往前跳k格。
1113
分割集合,使元素个数之差最小,元素之和之差最大,排序前n/2个一堆,剩下的一堆就行了,要用vector存。
1114
并查集,不用考虑任何辈分关系!!!把同一个家族的关联起来就可以了,在join的时候把id小的定位父节点就可以了,然后每次输入人都join起来,先把房子个数和面积存到相应的id里面。遍历每一个人(这个也要存一下),找到每个人的祖先节点,把房产个数和面积统计到祖先节点里,祖先节点自己的不用统计,然后家族人数+1,并且把每个家族的祖先节点存一下。建一个结构体,存每个家族祖先节点,算出要求的属性,排序。
1115
求二叉搜索树最后两层的节点数。思路大概是建一颗树。。。最开始输入的是根节点,然后后面输入的节点插入到树里去就行了。小的往左,大的往右。到了空节点就赋值,cnt++。节点用结构体。Dfs的话就是每层高度+1。统计每层节点个数。
1116
Map水过,判定素数是从2到<=sqrt(n)
1117
理解题意,有E天每天骑行大于E公里。排序遍历一遍就可以了。
1118
并查集,把输入的第一个元素当作父节点后面的都和他join起来,用set存bird,tree。
for(auto i=bir.begin(); i!=bir.end(); i++) {
tre.insert(find(*i));
}
1119
给出前序遍历和后序遍历求一个中序遍历并判断是否唯一,如果孩子全在左/右子树上并且没有兄弟节点就会出现不唯一的情况。
还是一样按下标遍历,遍历要记录先序和后序的左右范围,如果两个的左边界相差<=1,就不唯一,主要是搜先序遍历,先序遍历的左右边界重合就返回。后序遍历用来确定先序遍历的左右子树下标。
1120
Set水过
auto it 和 set<int>::iterator it 都可以。
1121
Map水过。
1122
判断哈密顿回路,每个节点经过一次,并回到原点,所以首尾节点相同。
用find查联通块,如果是不连通图直接判断不是。
Block=n-1,
每输入一条边
int A=find(a);
int B=find(b);
if(A==B)continue;
par[A]=B;
block--;
一开始每个点都是一个块所有都联通了就刚好减到0 了嘛。
1123
模拟AVLtree的插入过程。。。。
1124
Mapmapmap
1125
贪心,从小的往大的合并。
1126
欧拉回路,同样要判断是否是联通图。这里可以直接判断点的度数,奇数点
是0个就是欧拉回路,是2个就是欧拉通路。
1127
给出中序遍历和后序遍历求Z字形遍历。按下标捣鼓,主要搜后序遍历,中序遍历用来确定左右边界和当前节点,然后按层push每层的节点。
1128
伪8皇后问题,直接判断是否成立。
1129
前i位出现频率最高的k个数字。使用set,建立次数和值的结构体。每次更新出现次数,找出之前的次数erase掉再insert新的次数。重载运算符set会自动排序。用it->的方式访问。
1130
不用管他的输入顺序是什么。。。他的下标也是没什么规律。。。但是根节点下标一定在1~n范围内,所以标记一下孩子节点,遍历一遍找出根节点,用结构体保存左孩子,右孩子,值。然后dfs。递归左子树前输出(,递归右子树后输出)。中间是输出值。
1131
用 vector 类型的line[a[i-1]*10000+a[i]] 像这样子存 是否换乘
a*10000+b来保存一种状态,这两个站在哪条线上
开vector的点来存一个点与他相邻的点,然后dfs起点
1132
to_strng(a)将数字a转为string
stoi()将string转为int
substr(3,4)从3位置截取长度为4的字符串。
1133
链表,用结构体存,分三种来存就可以了。
1134
最小覆盖问题,给边编号,存边,存每个点连的边。然后扫一遍标记就可以了。
1135
判断红黑树。。。先用下标建树(标号),小于往左,大于往右这样子。
用绝对值判断往左还是往右,用正负判断红黑节点,建完树后遍历一遍每个节点的左右子树看看有没有违反红黑树定义。
1136
一串数字加它的逆序在10步以内能不能产生一个回文数字。
模拟大数加法。判断是不是回文reverse一下看看相不相等。
大数加法就是,每一位相加,看看是否进位,要进位就先标记一下,下一位相加的时候+1就可以了。
1137
结构体排序
1138
给出先序遍历和中序遍历求后序遍历
1139
读题,结构体排序。
1140
读懂题目就好了。。。[字符][这个字符出现的次数]不断重复这个过程累加字符串
1141
结构体排序。。。
1142
最大团:团内的点是相互连通的,并且无法找出另一个节点和团内节点都是联通的。
1143
LCA,因为是二叉搜索树,直接从左往右扫前序遍历,在两个节点大小范围内的就是LCA。
1144
水题
1145
哈希二次探测再散列,哈希表的size一定是素数,不是就加到是素数。主要是理解概念。
1146
判断拓扑排序,即删除入度为0的点的顺序。
1147
判断最大堆最小堆。
有多种判断的最好写一个judge函数然后看返回值。
1148
要找出两只狼,直接枚举。。。n^3复杂度也没有关系。。。
1149
Map
1150
判断各种环,常规做法就可以了。。。
1151
LCA,但这次是给出前序遍历和中序遍历。