Skip to content

Avito: Port ranges #27

@jtprogru

Description

@jtprogru

Дан диапазон портов min и max. Также есть список уже занятых портов busy. Нужно написать функцию, возвращающую все диапазоны свободных портов внутри min и max.

Ввод:

  • min = 30000 – Минимально допустимый порт
  • max = 32000 – Максимально допустимый порт
  • busy = [30100, 30200, 31111] – Перечисление конкртеных занятых портов

Вывод:

expected = [[30000, 30099], [30101, 30199], [30201, 31110], [31112, 32000]]

Оценка:

  • Длина списка busy - N
  • Оценка по времени - O(N)
  • Оценка по памяти - O(N)
# тестовый пример
a = 10
b = 12
busy = [10, 11, 12]

def func(min: int, max: int, b: list[int]) -> list[int]:
    if  len(b) < 1:
        return [min, max]
    result = [[min, busy[0]-1]]

    for i in  range(1, len(busy)):
        lfp = result[-1][1]
        if lfp+2 > busy[i-1] and lfp+2 < busy[i]:
            list_next_port = [lfp+2, busy[i]-1]
            result.append(list_next_port)

    list_last_port = [result[-1][1]+2, max]
    result.append(list_last_port)
    return result

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions