function solution(n, lost, reserve) {
const losts = lost.sort((a, b) => a - b);
const reserves = reserve.sort((a, b) => a - b);
let reserveCount = 0;
const set = new Set(reserves);
for (const [idx, val] of Object.entries(losts)) {
if (set.has(val)) {
set.delete(val);
losts[idx] = null;
reserveCount++;
}
}
for (const l of losts) {
switch (true) {
case set.has(l):
reserveCount++;
set.delete(l);
break;
case set.has(l - 1):
reserveCount++;
set.delete(l - 1);
break;
case set.has(l + 1):
reserveCount++;
set.delete(l + 1);
break;
}
}
return n - (lost.length - reserveCount);
}