Skip to content

Commit 420e093

Browse files
authored
Merge pull request doocs#177 from Hinsteny/master
Add Solution.py for 0122.Best Time to Buy and Sell Stock II
2 parents d2a3535 + 70bfe6d commit 420e093

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
## 买卖股票的最佳时机 II
2+
### 题目描述
3+
4+
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
5+
6+
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
7+
8+
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
9+
10+
**示例 1:**
11+
```
12+
输入: [7,1,5,3,6,4]
13+
输出: 7
14+
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
15+
  随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
16+
```
17+
18+
**示例 2:**
19+
```
20+
输入: [1,2,3,4,5]
21+
输出: 4
22+
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
23+
  注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。
24+
  因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
25+
```
26+
27+
**示例 3:**
28+
```
29+
输入: [7,6,4,3,1]
30+
输出: 0
31+
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
32+
```
33+
34+
### 解法
35+
问题描述中, 允许我们进行多次买入卖出操作, 同时还有一个隐含的条件---同一天内可以先卖出再买入;
36+
我们只需要遵照涨买跌卖原则中的涨买原则, 不断比较连续两天中后一天是否比前一天股价高, 是的话就进行前一天买入, 后一天卖出, 累加利润。
37+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class Solution:
2+
def maxProfit(self, prices: List[int]) -> int:
3+
maxprofit = 0
4+
for i in range(0, len(prices) - 1, 1):
5+
if prices[i + 1] > prices[i]:
6+
maxprofit += prices[i + 1] - prices[i]
7+
return maxprofit

solution/README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -481,9 +481,11 @@
481481
│   ├── Solution.js
482482
│   └── Solution.py
483483
├── 0122.Best Time to Buy and Sell Stock II
484+
│   ├── README.md
484485
│   ├── Solution.cpp
485486
│   ├── Solution.java
486-
│   └── Solution.js
487+
│   ├── Solution.js
488+
│   └── Solution.py
487489
├── 0123.Best Time to Buy and Sell Stock III
488490
│   ├── README.md
489491
│   ├── Solution.cpp

0 commit comments

Comments
 (0)