У меня есть массив array
из числа, заказанного. Я определяю число e
быть отсутствует из array
если:Найдите элементы, отсутствующие в массиве упорядоченных номеров
- Для некоторого элемента
v
изarray
,e
является либоv + 1
илиv - 1
, e
не является элементомarray
, иe
не меньше0
.
Например, элементы отсутствуют:
array = [0, 1, 2, 4, 5, 6, 9, 10, 12, 13, 17]
являются:
[3, 7, 8, 11, 14, 16, 18]
Как я могу найти элементы отсутствуют в данном массиве array
?
Рассмотрите возможность использования '- [-1]' вместо тяжелой 'O (N)' 'выберите> = 0 '. Кроме того, '[e-1, e + 1]' достаточно достаточно внутри 'flat_map'. – mudasobwa
@ mudasobwa, i argee с '[e-1, e + 1]'. Об индексе вместо этого выберите - что относительно случая, если первый элемент массива не '0'? – Ilya
Извините? Единственным избыточным элементом, который может появиться в результирующем массиве, является '-1'. Тем не менее, '- [-1]' и 'select {| e | e> = 0} '_ _ точный эквивалент_:' arr.flat_map {| e | (e - 1..e + 1) .to_a} .uniq - arr - [-1] '. – mudasobwa