Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Thuật toán cộng dồn phạm vi nằm trong phạm vi khác - JavaScript


Cho một phạm vi đơn R1 và tập hợp phạm vi R2. Tính tổng độ dài giao nhau của các phạm vi R2 với R1.

const R1 = [20,40]; 
const R2 = [[14,22],[24,27],[31,35],[38,56]];

Kết quả = 2+3+4+2 = 11.

Ví dụ 2: R1=[120,356], R2=[[234,567]] -> 122.

Ví dụ

Mã minh họa:

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));

Kết quả

Đầu ra:

11 
122