Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 다른 별도 범위 내에 있는 범위를 합산하는 알고리즘

<시간/>

두 세트의 범위가 있습니다. 하나는 임의의 길이(R1)의 단일 범위이고 다른 하나는 일부 또는 일부가 단일 범위(R1) 내에 있거나 없을 수 있는 범위 세트(R2)입니다.

단일 범위(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