Функция подсчета лидера чисел

Рейтинг: -1Ответов: 1Опубликовано: 24.01.2023

Создать функцию которая рассчитывает число лидер. Число считается Лидером, если оно больше суммы всех элементов справа от него. Основные условия:

  1. Входящий список содержит не менее 3 элементов.
  2. Список входных чисел может содержать как положительные, так и отрицательные числа.
  3. Числа могут повторяться
  4. Возвращаемый список должен содержать числа в том же порядке, в котором они встречаются в исходном списке.
  5. Отсутствие элементов справа от числа расценивается как 0. Написал функцию, но она почему то не выводит последнее число и не выводит отрицательные числа.
def get_leaders(numbers: list) -> list:
    new_list = []
    for i in range(0, len(numbers)-1):
        if numbers[i] == 0:
            return []
        if numbers[i] >= numbers[i+1] + numbers[i+1]:
            new_list.append(numbers[i])
    return new_list

print(get_leaders([1, 2, 3, 4, 0]))  # == [4]
print(get_leaders([16, 17, 4, 3, 5, 2]))  # == [17, 5, 2]
print(get_leaders([16, 8, 4, 2, 1]))  # == [16, 8, 4, 2, 1]
print(get_leaders([0, 0, 0, 0]))  # == []
print(get_leaders([-1, -1, -1, -1]))   # == [-1, -1]
print(get_leaders([-45, -23, -16, -1, 1]))  # == [1]
print(get_leaders([0, -1, -29, 3, 2]))  # == [0, -1, 3, 2]
print(get_leaders([5, -2, 0]))  # == [5]

Ответы

▲ 0Принят

Можно перебирать список задом наперёд, тогда проще и быстрее

def get_leaders(numbers: list) -> list:
    new_list, s = [], 0
    for i in reversed(numbers):
        if i > s:
            new_list.insert(0, i)
        s += i
    return new_list


print(get_leaders([1, 2, 3, 4, 0]))  # == [4]
print(get_leaders([16, 17, 4, 3, 5, 2]))  # == [17, 5, 2]
print(get_leaders([16, 8, 4, 2, 1]))  # == [16, 8, 4, 2, 1]
print(get_leaders([0, 0, 0, 0]))  # == []
print(get_leaders([-1, -1, -1, -1]))  # == [-1, -1]
print(get_leaders([-45, -23, -16, -1, 1]))  # == [1]
print(get_leaders([0, -1, -29, 3, 2]))  # == [0, -1, 3, 2]
print(get_leaders([5, -2, 0]))  # == [5]
[4]
[17, 5, 2]
[16, 8, 4, 2, 1]
[]
[-1, -1]
[1]
[0, -1, 3, 2]
[5]