在JavaScript中按时间间隔排序的数组中插入新的时间间隔

出于这个问题的目的,我们将间隔定义为两个数字组成的数组,其中第一个数字始终小于第二个数字。

例如-

[4, 6], [2, 3], [6, 8], [2, 7], [1, 8] are all examples of valid intervals.

假设我们有一个间隔数组,该间隔根据其开始时间(每个间隔的第一个元素)进行排序。

数组中的间隔是不重叠的,这意味着对于任意两个相邻的间隔,

[m, n], [x, y]

m < n < x < y

因此,这种间隔数组的一个示例可以是-

const arr = [[ 2, 4], [5, 7], [9, 10], [13, 17]];

我们需要编写一个JavaScript函数,该函数将一个这样的间隔数组作为第一个参数,并将一个间隔作为第二个参数。

然后,该函数应将间隔插入到数组中的正确位置,并保持数组的非重叠属性。

如果需要,我们可以合并数组中的两个或更多间隔,以使数组间隔不重叠。

例如,如果对于上述间隔数组,我们需要插入的间隔为[6,13],则输出应类似于-

const output = [[2, 4], [5, 17]];

示例

以下是代码-

const arr = [[2, 4], [5, 7], [9, 10], [13, 17]];

const interval = [6, 13];

const insertWithin = (arr = [], interval = []) => {

   const res = [];

   let ind = 0;

   while (arr[ind] && arr[ind][1] < interval[0]) {

      res.push(arr[ind]);

      ++ind;

   };

   let start = interval[0];

   let end = interval[1];

   while (arr[ind] && arr[ind][0] <= interval[1]) {

      start = Math.min(start, arr[ind][0]);

      end = Math.max(end, arr[ind][1]);

      ++ind;

   }

   res.push([start, end]);

   while (arr[ind]) {

      res.push(arr[ind]);

      ++ind;

   }

   return res;

};

console.log(insertWithin(arr, interval));

输出结果

以下是控制台输出-

[[2, 4], [5, 17]]

以上是 在JavaScript中按时间间隔排序的数组中插入新的时间间隔 的全部内容, 来源链接: utcz.com/z/337928.html

回到顶部