Skip to content

Instantly share code, notes, and snippets.

@superkiria
Created November 10, 2018 18:54
Show Gist options
  • Save superkiria/4242ab2af722d4277c326ac573a21fc4 to your computer and use it in GitHub Desktop.
Save superkiria/4242ab2af722d4277c326ac573a21fc4 to your computer and use it in GitHub Desktop.
# Второе решение без циклов, но самое медленное
# Отсортируем массив, возьмём отрицательную часть (она будет слева от нуля), сравним с положительной (она будет справа) и вернём одну из них
def task_2(arr):
arr = arr.copy() # не хотим менять данный массив, поэтому делаем копию
arr.append(0) # добавляем 0, а то вдруг его нет в массиве
arr = sorted(arr) # сортируем, очень дорогая операция из-за неё решение работает в 10 раз медленне, чем третье моё решение
zero = arr.index(0) # определяем индекс нуля
if sum(arr[zero + 1:]) > abs(sum(arr[0:zero])): # сравниваем левую часть массива с правой и выводим нужную
return arr[zero + 1:]
else:
return arr[0:zero]
# тесты
test_set = ([-1, 2, -1, 3, -4], [1, 2, 1, 3, 4, -6], [-1, 0, 2], [1], [-1], [11, -1, -2, -3, -4], [10, -1, -2, -3, -4])
for i in test_set:
print(i, " ::: ", task_2(i))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment