-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathbest-time-to-buy-and-sell-stock-ii.py
More file actions
43 lines (33 loc) · 1.56 KB
/
best-time-to-buy-and-sell-stock-ii.py
File metadata and controls
43 lines (33 loc) · 1.56 KB
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
'''
Say you have an array for which the ith element is the price of a given stock on day i.
Design an algorithm to find the maximum profit. You may complete as many transactions as you like (i.e., buy one and sell one share of the stock multiple times).
Note: You may not engage in multiple transactions at the same time (i.e., you must sell the stock before you buy again).
Example 1:
Input: [7,1,5,3,6,4]
Output: 7
Explanation: Buy on day 2 (price = 1) and sell on day 3 (price = 5), profit = 5-1 = 4.
Then buy on day 4 (price = 3) and sell on day 5 (price = 6), profit = 6-3 = 3.
Example 2:
Input: [1,2,3,4,5]
Output: 4
Explanation: Buy on day 1 (price = 1) and sell on day 5 (price = 5), profit = 5-1 = 4.
Note that you cannot buy on day 1, buy on day 2 and sell them later, as you are
engaging multiple transactions at the same time. You must sell before buying again.
Example 3:
Input: [7,6,4,3,1]
Output: 0
Explanation: In this case, no transaction is done, i.e. max profit = 0.
'''
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
# 从问题的本质入手,而不是观察示例序列的规律。
# 优化目标是总的赚钱利润,用贪心算法,只要是相隔两天有盈利就操作,即可得到最大利润(现实环境没有这么“干净”的问题)
maxPro = 0
for i in range(1,len(prices)):
if prices[i] > prices[i-1]:
maxPro += prices[i] - prices[i-1]
return maxPro