Найти в Дзене
Максим

Решаю Leetcode TI150 #122 На Python

Ссылка на задачу Вам дан целочисленный массив prices, где prices[i] - это цена данной акции на i-й день.
В каждый день вы можете принять решение о покупке и/или продаже акции. В любой момент времени вы можете держать не более одной акции. Однако вы можете купить ее и тут же продать в тот же день.
Найдите и верните максимальную прибыль, которую вы можете получить. Решение Первое что пришло в голову: Проходимся по списку и сравниваем настоящее число с предыдущим, если настоящее меньше - ничего не делаем, идём дальше. Если настоящее больше, то мы записываем разницу между настоящим и предыдущим по списку и идём дальше по списку.
Но в таких случаях как будто отсекаются все варианты с шагом больше чем 1, пишу\проверяю.
На 3 примерах сработало, но, что-то мне подсказывает, что он выдаст ошибку на проверке\ отправляю.
Ебать, прошло
Вот решение:
def max_profit(prices):
profit_sum = 0
check = prices[0]
for i in range(1, len(prices)):
if prices[i] > check:

Ссылка на задачу

Вам дан целочисленный массив prices, где prices[i] - это цена данной акции на i-й день.

В каждый день вы можете принять решение о покупке и/или продаже акции. В любой момент времени вы можете держать не более одной акции. Однако вы можете купить ее и тут же продать в тот же день.

Найдите и верните максимальную прибыль, которую вы можете получить.

Решение

Первое что пришло в голову:

Проходимся по списку и сравниваем настоящее число с предыдущим, если настоящее меньше - ничего не делаем, идём дальше. Если настоящее больше, то мы записываем разницу между настоящим и предыдущим по списку и идём дальше по списку.

Но в таких случаях как будто отсекаются все варианты с шагом больше чем 1, пишу\проверяю.

На 3 примерах сработало, но, что-то мне подсказывает, что он выдаст ошибку на проверке\ отправляю.

Ебать, прошло

Вот решение:


def max_profit(prices):
profit_sum = 0
check = prices[0]

for i in range(1, len(prices)):
if prices[i] > check:
profit_sum += prices[i] - check
check = prices[i]
else:
check = prices[i]
return profit_sum


prices = [7,6,4,3,1]

print(max_profit(prices))

По скорости алгоритм не самый быстрый, но решение нашёл достаточно быстро!

Идём дальше