Chúng tôi có hai tập hợp các phạm vi; một là một dải ô có độ dài bất kỳ (R1) và dải kia là một tập hợp các dải (R2) một số hoặc các phần trong đó có thể hoặc không nằm trong một dải (R1).
Chúng ta cần tính toán tổng các phạm vi trong (R2) - toàn bộ hoặc từng phần - nằm trong phạm vi đơn (R1).
const R1 = [20,40]; const R2 = [[14,22],[24,27],[31,35],[38,56]];
Kết quả
= 2+3+4+2 = 11
R1 = [120,356]; R2 = [[234,567]];
Kết quả
122
Ví dụ
Hãy để chúng tôi viết mã -
const R1 = [20,40]; const R2 = [[14,22],[24,27],[31,35],[38,56]]; const R3 = [120,356]; const R4 = [[234,567]]; function sumRanges(range, values) { const [start, end] = range; const res = values.reduce((acc, val) => { const [left, right] = val; const ex1 = Math.min(right, end); const ex2 = Math.max(left, start); const diff = ex1 - ex2; return acc + Math.max(0, diff); }, 0); return res; }; console.log(sumRanges(R1, R2)); console.log(sumRanges(R3, R4));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
11 122