知识点:尺取法
首先一眼看出这个题可以用尺取法,然后这个题我一开始没有看英文原题,看了输入的时候懵了,序列在哪里,然后看看题才知道,序列让你自己造,造完之后就可以开始尺取了,
我自己总结的尺取法的步骤有四个,移动右下标,判断退出,更新答案,移动左下标,一个一个来说
移动右下标,这里需要注意只有序列里面小于等于k的数字才是我们需要统计数目的数字,边移动下标边统计出现了几个不同的有效数字了,
判断退出,右下标移动完了,出来了,如果出现的数字数小于k,这就隐含了右下标已经走到了n+1,那么说明就已经没有答案可以统计了,退出
更新答案,程序走到这里没有退出,那么说明统计的出现数字数达标了,可以直接更新答案了,
移动左下标,这里我们移动左下标的思路就是移动到当前元素后面第一个有效元素,我们要先写一个if,因为除了第一次移动的时候当前元素可能不是有效元素,后面每次移动,第一个都是有效元素,然后是一个while循环,目的就是为了移动过那些无效元素,直到有效元素,停,移动完之后,需要更新答案,因为序列里面有效元素是不限次数出现的,很明显,移动完之后可能会有更短的满足题意的序列,
这样,这个题就完成了,不错的尺取法练习题,
看了别人的题解,思考了一下,二分答案也可以做,判定函数就是给一个区间的长度,线性扫描一遍,看看有没有至少一个区间是