яндекс собеседования

golang Поиск пересечений списков отрезков времени

У нас есть два списка отрезков упорядоченных отрезков "времени" вида:

1) [1, 5] [7, 10]
2) [2, 8] [9, 12] [13, 15]

-- требуется найти список пересечений этих отрезков, напр. в данном случае ответ будет:

[2, 5] [7, 8] [9, 10]

Возможная визуализация:

--------   ---     --------- --------
  ---   ---   ---       ------    -----  -------- -----       ------

Общая идея решения (алгоритм)

Будем действовать так:

Поиск пересечений отрезков (времени) в массивах - Разбор алгоритмической задачи с собеседований PHP

Задача:
Даны два списка отрезков времени, каждый список упорядочен.

Найдите третий список, в котором будут отрезки, являющиеся пересечениями первых двух списков.

Например для:

[[1, 5], [7, 10], [12, 24]]
[[4, 6], [12, 13], [30, 35]]

Ответом будет:

[[4, 5], [10, 12]]

Разбор решения

В решении будем применять визуализацию:

Поиск выбывших/отсутcтвующих в массиве элементов - Разбор алгоритмической задачи с собеседований

Условие:
У нас есть массив целых чисел:

[123, 45, 5638, 49, -78, 22, 5, 345, 68, 7]

из него удалили некоторые элементы, так что он получил вид:

[123, 5638, 22, 5, 68, 7, 0, 0, 0, 0]

-- выведите на экран числа, которые были удалены.
Например, в данном случае ожидается вывод:

 [45, 49, -78,  345]

Возможное решение

Например, так:

Перестановка нулей в конце массива - Разбор решения алгоритмической

Условие:

У вас есть массив целых чисел, в котором встречаются нули, например:
[0, 3, 2, 1, 0, 3, 2, 4, 0, -5]
Перенесите эти нули в конец массива, чтобы в итоге мы получили:
[3, 2, 1, 3, 2, 4, -5, 0, 0, 0]

Финальный вариант:

Subscribe to RSS - яндекс собеседования