10.25【A】

1254

就是说相比原来朴素的bfs,还要求每个岛都被水包围

如果是中间的位置,那必然是被水包围的

所以只有跟边界相关的岛,才不会被水包围

所以在bfs时,还要加一个flag表示这个岛是否和边界沾边,只要沾边就不能res++

AI优化

4093

考虑构造出一个新数组arr,即原数组中每个元素所能构造出的最大数字

然后排序新数组arr,取前k个数加和,同时标记其为使用,但排序后难以知道topk的数字对应原数字是哪个

再考虑新数组arr为构造后新最大数字与原数字的插值,对这个进行排序

然后之前对原数组求和,之后在排序后的arr数组中,取出topk个值大于0的插值作用到求和结果中

4094

因为是弱化版,所以先枚举

枚举起点,然后要求接下来的数字符合要求

之前想的要求,是相同数字之间必须连续,所以对于样例3的实现,少了0-5,

即不连续都可以,只要最终数量符合要求即可,而且必须符合出现的顺序

考虑结合vector与set实现

貌似都不用set,只要vector,

还是需要set的,因为不知道当前数字是否出现过,以及在Vector当中的位置

那就不是set了,而是哈希表了

如果没出现过,那就是Push_back到vector后面,哈希表记录该数字在数组中的位置,这个位置也代表了不同数字出现的次序,要求其vector值不得超过其次序

如果出现过,那么通过哈希表找到下标,并使其值++,同时检查是否超过次序

但这样的话,无法检查中间可能的子数组

或许还是能的

就是当到达结尾或非法的时候,自vector头部开始检查,查符合条件的数量,就是以此i为头部的所有子数字的数量

但还是有问题,就是即使vector中第二个数满足数量条件,但因为是从数量上直接判断的,所以第二个2判断出来时,还会包含上不满足条件的8

AI题解

意思就是把判断提前,每次子数组扩展的时候就判断,如果满足条件就res++,如果非法了,那么后面也一定非法,当前的也组成不了,前面的已经在每轮里都统计过了所以也不会漏,所以依然是直接Break掉

4095

大数据范围

AI题解

就是固定左端点时,是枚举k=1,2,3等数组长度,然后去验证是否真的能构成;

关键在于枚举K的时候,如何知道此时子数组里该有哪k个元素呢?以及这k个元素是否能满足条件?

此外,这里存在一个关键误区,也是之前自己一直想错的点,就是不同K在组成子数组时,答案不具有连续性,即k=2如果不满足条件,那么不能提前break,在K=3或K=4的时候,可能依然可以组成合法子数组

只是在判断每个K是否能组成合法子数组时,单个k内可以提前break掉,但不能Break掉不同k之间的校验

如何知道此时子数组里该有哪k个元素呢?

相关推荐
greencherry_1 小时前
大连模屿石膏课模具配比全固定,调色浇注之外还缺什么?
算法·生活
晒太羊的猫2 小时前
hot100子串
java·算法·leetcode
小豆庄2 小时前
视频脱敏引擎的追踪难题:转场误判定、ID撞号和淡入窗口
qt·算法·目标检测·音视频·视频·敏捷流程
海清河晏1113 小时前
加油站问题
数据结构·算法·leetcode
GG.WinGel3 小时前
质数数目(蓝桥杯练习题)
java·数据结构·算法·青少年编程·蓝桥杯
艾iYYY3 小时前
进程的状态
算法
秋天的怀念_David3 小时前
算法一千零一夜 · 第十七夜 长街点灯
java·程序人生·算法
CV爱数码3 小时前
论文精读|RED-CNN:残差编解码网络,低剂量 CT 去噪的经典基线
网络·人工智能·算法·cnn·ct·重建·x-ray
JustNow_Man3 小时前
【Harness】本地文本向量化搜索解决方案--qmd
git·python·算法