AcWing 799. 最长连续不重复子序列
原题链接
简单
作者:
一个不正经的程序员
,
2024-11-21 21:56:38
,
所有人可见
,
阅读 1
// 最长连续不重复子序列
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
const input = [];
readline.on('line', (line) => {
input.push(line);
});
readline.on('close', () => {
const n = Number(input[0]); // 序列长度
const nums = input[1].split(' ').map(Number); // 序列数组
const seen = new Set(); // 用于记录窗口中的元素
let left = 0; // 窗口左边界
let maxLength = 0; // 最大长度
for (let right = 0; right < n; right++) {
// 如果右边界的数在窗口中,移动左边界,直到窗口中没有重复数
while (seen.has(nums[right])) {
seen.delete(nums[left]); // 从窗口中移除左边界的数
left++;
}
seen.add(nums[right]); // 将当前数添加到窗口中
maxLength = Math.max(maxLength, right - left + 1); // 更新最大长度
}
console.log(maxLength);
});