function getDays (ranges: readonly (readonly [number, number])[]): number {
const days = new Set<number>();
for (const [start, end] of ranges) {
for (let time = start; end >= time; time += 8.64e7) {
days.add(time);
}
}
return days.size;
}
getDays([
[Date.parse("2021-01-02"), Date.parse("2021-01-05")],
[Date.parse("2021-01-04"), Date.parse("2021-01-06")],
]);
把时间看成数轴,其实这就是两个区间的相对位置;要么有区间重叠,时间就是最小值到最大值的天数;
要么不重叠,各自区间相减的和 就是最后结果
Python version: