-
Notifications
You must be signed in to change notification settings - Fork 0
/
5.py
26 lines (18 loc) · 1.46 KB
/
5.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#Количество периодов плавного спуска
#Вам дан целочисленный массив, pricesпредставляющий дневную историю цен акций, где prices[i]цена акции в этот день.ith
#Период плавного снижения акции состоит из одного или нескольких последовательных дней, когда цена каждого дня ниже цены предыдущего дня ровно на 1. Первый день периода освобождается от этого правила.
#Возвращает количество периодов плавного спуска (7):
#[3], [2], [1], [4], [3,2], [2,1] и [3,2,1]
# массив arr[i] - количество периодов плавного спуска
# arr[0] = 1
# если prices[i] == prices[i - 1], то arr[i] = arr[i - 1] + 1 #цена каждого дня ниже цены предыдущего дня ровно на 1.
# иначе arr[i] = 1
#сложность - O(n)
class Solution:
def getDescentPeriods(self, prices: List[int]) -> int:
n = len(prices)
dp = [1]*n
for i in range(1, n):
if prices[i] + 1 == prices[i-1]: #по мере увеличения дня на 1, цена акции снижается соответственно
dp[i] += dp[i-1]
return sum(dp) #кол-во дней плавного спуска цены