题解 | 小红的区间删除
小红的区间删除
https://www.nowcoder.com/practice/69d1f3e2b1624e958cbf81d74b6cd840
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// 读取输入
const n = parseInt(await readline());
const arr = (await readline()).split(" ").map(Number);
const firstOccurrence = new Map(); // 存储数值第一次出现的索引
const lastOccurrence = new Map(); // 存储数值最后一次出现的索引
let maxDeleted = 0; // 记录最大删除数量
// 遍历数组,记录每个数值的第一次和最后一次出现的位置
for (let i = 0; i < n; i++) {
const num = arr[i];
if (!firstOccurrence.has(num)) {
firstOccurrence.set(num, i);
}
lastOccurrence.set(num, i);
}
// 计算所有可能的 j - i - 1,取最大值
for (const [num, first] of firstOccurrence) {
const last = lastOccurrence.get(num);
if (first !== last) {
// 确保有两个不同的位置
maxDeleted = Math.max(maxDeleted, last - first - 1);
}
}
console.log(maxDeleted);
})();
海康威视公司福利 1125人发布