JavaScript 中計算位於另一個獨立範圍內的範圍之和的演算法


我們有兩組範圍;一組是任意長度的單一範圍 (R1),另一組是一組範圍 (R2),其中一些範圍的全部或部分可能位於單一範圍 (R1) 內,也可能不位於其中。

我們需要計算位於單一範圍 (R1) 內的 (R2) 中的範圍之和 - 全部或部分。

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

結果 

= 2+3+4+2 = 11
R1 = [120,356];
R2 = [[234,567]];

結果 

122

示例

讓我們編寫程式碼 -

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

輸出

控制檯中的輸出將是 -

11
122

更新於:2020 年 11 月 20 日

84 次瀏覽

開啟您的 職業道路

完成課程取得認證

開始學習
廣告
© . All rights reserved.