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个元素呢?

相关推荐
Pniubi7 小时前
动态规划入门 ( - 力扣509斐波那契数)
算法·动态规划
吴长建先生重名了8 小时前
GitHub Actions部署报表系统踩坑记:幂等性与限
算法
贝壳6908 小时前
一个2026年2月才上传的库,凭什么敢碰2009年就有人写烂的题目
算法
贝壳6909 小时前
同一道三亿位选型题,三个AI给了我三个答案,我把它们拉进同一台机器复跑
算法
岑梓铭11 小时前
《考研408数据结构》第八章(排序)复习笔记
数据结构·笔记
青少儿编程课堂11 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会图形化考级:校园大富翁经营闯关解析
c++·python·算法·bfs·信息学竞赛
在所不辞兄12 小时前
为什么在新能源汽车电驱与热管理开发中,AI驱动的数字孪生和数据驱动仿真正在部分替代对物理台架与实车标定的依赖?
人工智能·深度学习·神经网络·算法·机器学习
I_belong_to_jesus1 天前
C++关于分支预测的优化1
开发语言·c++·算法
Code_Solitude1 天前
C语言动态内存 + 柔性数组 + 数组名退化
c语言·算法·柔性数组