Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

อัลกอริธึมเพื่อผลรวมช่วงที่อยู่ภายในช่วงที่แยกจากกันใน JavaScript


เรามีช่วงสองชุด ช่วงหนึ่งคือช่วงเดียวของความยาวใดๆ (R1) และอีกช่วงคือชุดของช่วง (R2) บางส่วนหรือบางส่วนซึ่งอาจอยู่ภายในช่วงเดียว (R1) หรือไม่ก็ได้

เราจำเป็นต้องคำนวณผลรวมของช่วงใน (R2) - ทั้งหมดหรือบางส่วน - ซึ่งอยู่ภายในช่วงเดียว (R1)

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