1254就是说相比原来朴素的bfs还要求每个岛都被水包围如果是中间的位置那必然是被水包围的所以只有跟边界相关的岛才不会被水包围所以在bfs时还要加一个flag表示这个岛是否和边界沾边只要沾边就不能resAI优化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判断出来时还会包含上不满足条件的8AI题解意思就是把判断提前每次子数组扩展的时候就判断如果满足条件就res如果非法了那么后面也一定非法当前的也组成不了前面的已经在每轮里都统计过了所以也不会漏所以依然是直接Break掉4095大数据范围AI题解就是固定左端点时是枚举k1,2,3等数组长度然后去验证是否真的能构成关键在于枚举K的时候如何知道此时子数组里该有哪k个元素呢以及这k个元素是否能满足条件此外这里存在一个关键误区也是之前自己一直想错的点就是不同K在组成子数组时答案不具有连续性即k2如果不满足条件那么不能提前break在K3或K4的时候可能依然可以组成合法子数组只是在判断每个K是否能组成合法子数组时单个k内可以提前break掉但不能Break掉不同k之间的校验如何知道此时子数组里该有哪k个元素呢