Computer >> Máy Tính >  >> Lập trình >> Javascript

Thuật toán tính tổng các phạm vi nằm trong một phạm vi riêng biệt khác trong JavaScript

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