Sobes.tech
Middle

/* Zwei sortierte Listen mit Intervallen der Online-Präsenz von Benutzern während des Tages werden gegeben. Der Beginn des Intervalls ist strikt kleiner als das Ende. Es ist erforderlich, die Intervalle zu berechnen, in denen beide Benutzer online waren. Die Intervalle sind in Stunden angegeben, wobei Stunden von 0 bis 24 möglich sind. */ Schnittstelle( [[8, 12], [17, 22]], [[5, 11], [14, 18], [20, 23]] )// [[8, 11], [17, 18], [20, 22]] Schnittstelle( [[9, 15], [18, 21]], [[10, 14], [21, 22]] )// [[10, 14]] function schnittstelle(benutzer1, benutzer2) { // dein Code hier }

sobes.tech KI

Antwort von AI

Для нахождения пересечения двух списков интервалов можно использовать алгоритм с двумя указателями, проходя по обоим спискам одновременно и вычисляя пересечения текущих интервалов.

Пример решения на JavaScript:

function intersection(user1, user2) {
  let i = 0, j = 0;
  const result = [];

  while (i < user1.length && j < user2.length) {
    const start = Math.max(user1[i][0], user2[j][0]);
    const end = Math.min(user1[i][1], user2[j][1]);

    if (start < end) { // есть пересечение
      result.push([start, end]);
    }

    // сдвигаем указатель у того интервала, который заканчивается раньше
    if (user1[i][1] < user2[j][1]) {
      i++;
    } else {
      j++;
    }
  }

  return result;
}

// Пример использования:
console.log(intersection(
  [[8, 12], [17, 22]],
  [[5, 11], [14, 18], [20, 23]]
));
// Выведет: [[8, 11], [17, 18], [20, 22]]

Этот алгоритм работает за время O(n + m), где n и m — длины списков интервалов.