6031. 找出数组中的一切 K 近邻下标
用7分37秒来研究极简单题。
我的方法:首先将满足条件2的数组单独存储,然后遍历新数组,并逐一检查原数组是否符合条件1。
结论:由于这是两个循环,直接两个循环找到最终答案,浪费了新数组的空间和第二次通过新数组的时间,代码更长。
5203. 统计可提取的工件
简单的中等题需要15分钟以上。
我的方法:先遍历dig二元组数组[a,b]存入二维数组w[a][b]=1.然后通过工件数组逐一检查每个工件占用的每个位置。
总结:方法和题目本身都很简单,或者动作太慢。
5227. K 第二次操作后,顶部元素最大化
中等题,用时55分钟!
这道题我要深刻反省,说是k次操作就老老实实地在写每次操作的具体方法(写了del方法、insert方法什么的),真的是用一堆来存放,用几组来存放和拿走剩下的,属于用战术上的勤奋来掩盖战略上的懒惰。
其实这个问题根本不需要真正模拟具体的操作流程,重点是想清楚规律:
- 只有一个数字,如果K是奇数,最后只有空栈。
- 当只有一个数字时,如果k是偶数,则最终将这个数字留在栈中。
- 多次,找前k-最大值在1个数中m,这可能是结果m(特别见4),(相当于前一餐),第k步把m放回去。k>n也是如此,在n个数中寻找m。
- 特殊情况时k<n,而且第k 1个数比前k-一个数都大,最后的结果是这个k数(只拿不放回)。
- 不需要处理第k数最大的情况,因为取出或放回k次,不可能把k留在顶部。
6032. 获得所需路径的最小带权子图
这个问题只剩下12分钟了,但看起来真的不可能。
做了一个下午还是不对。。。dijskra算法应用得还是很不熟练,效率期间先留在这,等补