Скажем, у меня есть список диапазонов (то есть [[1,100][102, 200], etc]]
я хочу найти количество недостающих элементов в общем диапазоне У меня есть алгоритм работы ниже:Поиск отсутствующих элементов среди ряда числовых строк
def missing(numranges):
(minimum, maximum) = (min(map(lambda x: x[0], numranges)),
max(map(lambda x: x[1], numranges)))
(count, i) = (0, minimum)
while i < maximum:
if any(j <= i <= k for j, k in numranges):
count += 1
i += 1
return maximum - minimum - count
Проблема заключается в том, что вы сказали, что номер строки, который говорит, как [[1, 10000], [10002, 20000]]
, тогда я просматриваю все 20 000 элементов, и мне кажется, что это очень неэффективно. Я пытаюсь найти способ улучшить алгоритм но я немного в тупике.
Редактировать: К сожалению, следовало бы упомянуть, что диапазоны чисел могут перекрываться (то есть [1, 10000], [1, 100001], [100003, 100005], etc]]
Если ваш код работает, и вы просто хотите его улучшить, я предлагаю вам опубликовать его на [Codereview] (http://codereview.stackexchange.com/) – Harrison
@Harrison. Извините, сделаю это в будущем. –