$求长度为n的序列中,包括1、2、3…k的最短连续子序列,使用双指针在O(N)时间内求$
int l = 1;
int ans = 0x3f3f3f3f;
int cnt = 0; // 记录出现过的个数
for(int r = 1; r <= n; ++ r){
if(a[r] > k) continue;
if(!t[a[r]]) ++ cnt;
t[a[r]] ++;
// 左指针开始移动
while(l < r && (a[l] > k || t[a[l]] > 1)){
t[a[l]] -= 1;
++ l;
}
// 记录最短序列长度
if(cnt == k){
ans = min(ans, r - l + 1);
}
}