docs: 股票的最佳时机二添加视频链接跳转

This commit is contained in:
liangzhensheng
2023-03-17 11:17:32 +08:00
parent ef8500d4cf
commit ef5a6f8567

View File

@ -4,7 +4,6 @@
</a> </a>
<p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p> <p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
# 122.买卖股票的最佳时机 II # 122.买卖股票的最佳时机 II
[力扣题目链接](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) [力扣题目链接](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/)
@ -15,32 +14,39 @@
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
示例 1: 示例 1:
* 输入: [7,1,5,3,6,4]
*: 7 -: [7,1,5,3,6,4]
* 解释: 在第 2 天(股票价格 = 1的时候买入在第 3 天(股票价格 = 5的时候卖出, 这笔交易所能获得利润 = 5-1 = 4。随后在第 4 天(股票价格 = 3的时候买入在第 5 天(股票价格 = 6的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。 - 输出: 7
- 解释: 在第 2 天(股票价格 = 1的时候买入在第 3 天(股票价格 = 5的时候卖出, 这笔交易所能获得利润 = 5-1 = 4。随后在第 4 天(股票价格 = 3的时候买入在第 5 天(股票价格 = 6的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
示例 2: 示例 2:
* 输入: [1,2,3,4,5]
*: 4 -: [1,2,3,4,5]
* 解释: 在第 1 天(股票价格 = 1的时候买入在第 5 天 (股票价格 = 5的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。 - 输出: 4
- 解释: 在第 1 天(股票价格 = 1的时候买入在第 5 天 (股票价格 = 5的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
示例  3: 示例  3:
* 输入: [7,6,4,3,1]
*: 0 -: [7,6,4,3,1]
* 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。 - 输出: 0
- 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
提示: 提示:
* 1 <= prices.length <= 3 * 10 ^ 4
* 0 <= prices[i] <= 10 ^ 4 - 1 <= prices.length <= 3 \* 10 ^ 4
- 0 <= prices[i] <= 10 ^ 4
# 视频讲解
**《代码随想录》算法视频公开课:[贪心算法也能解决股票问题LeetCode122.买卖股票最佳时机 II](https://www.bilibili.com/video/BV1ev4y1C7na),相信结合视频在看本篇题解,更有助于大家对本题的理解**。
## 思路 ## 思路
本题首先要清楚两点: 本题首先要清楚两点:
* 只有一只股票! - 只有一只股票!
* 当前只有买股票或者卖股票的操作 - 当前只有买股票或者卖股票的操作
想获得利润至少要两天为一个交易单元。 想获得利润至少要两天为一个交易单元。
@ -62,7 +68,6 @@
如图: 如图:
![122.买卖股票的最佳时机II](https://code-thinking-1253855093.file.myqcloud.com/pics/2020112917480858-20230310134659477.png) ![122.买卖股票的最佳时机II](https://code-thinking-1253855093.file.myqcloud.com/pics/2020112917480858-20230310134659477.png)
一些同学陷入:第一天怎么就没有利润呢,第一天到底算不算的困惑中。 一些同学陷入:第一天怎么就没有利润呢,第一天到底算不算的困惑中。
@ -92,8 +97,8 @@ public:
}; };
``` ```
* 时间复杂度O(n) - 时间复杂度O(n)
* 空间复杂度O(1) - 空间复杂度O(1)
### 动态规划 ### 动态规划
@ -119,8 +124,8 @@ public:
}; };
``` ```
* 时间复杂度:$O(n)$ - 时间复杂度:$O(n)$
* 空间复杂度:$O(n)$ - 空间复杂度:$O(n)$
## 总结 ## 总结
@ -137,6 +142,7 @@ public:
### Java: ### Java:
贪心: 贪心:
```java ```java
// 贪心思路 // 贪心思路
class Solution { class Solution {
@ -151,6 +157,7 @@ class Solution {
``` ```
动态规划: 动态规划:
```java ```java
class Solution { // 动态规划 class Solution { // 动态规划
public int maxProfit(int[] prices) { public int maxProfit(int[] prices) {
@ -173,7 +180,9 @@ class Solution { // 动态规划
``` ```
### Python: ### Python:
贪心: 贪心:
```python ```python
class Solution: class Solution:
def maxProfit(self, prices: List[int]) -> int: def maxProfit(self, prices: List[int]) -> int:
@ -184,6 +193,7 @@ class Solution:
``` ```
动态规划: 动态规划:
```python ```python
class Solution: class Solution:
def maxProfit(self, prices: List[int]) -> int: def maxProfit(self, prices: List[int]) -> int:
@ -200,6 +210,7 @@ class Solution:
### Go: ### Go:
贪心算法 贪心算法
```go ```go
func maxProfit(prices []int) int { func maxProfit(prices []int) int {
var sum int var sum int
@ -212,7 +223,9 @@ func maxProfit(prices []int) int {
return sum return sum
} }
``` ```
动态规划 动态规划
```go ```go
func maxProfit(prices []int) int { func maxProfit(prices []int) int {
dp := make([][]int, len(prices)) dp := make([][]int, len(prices))
@ -239,6 +252,7 @@ func max(a, b int) int {
### Javascript: ### Javascript:
贪心 贪心
```Javascript ```Javascript
var maxProfit = function(prices) { var maxProfit = function(prices) {
let result = 0 let result = 0
@ -250,6 +264,7 @@ var maxProfit = function(prices) {
``` ```
动态规划 动态规划
```javascript ```javascript
const maxProfit = (prices) => { const maxProfit = (prices) => {
let dp = Array.from(Array(prices.length), () => Array(2).fill(0)); let dp = Array.from(Array(prices.length), () => Array(2).fill(0));
@ -282,12 +297,13 @@ function maxProfit(prices: number[]): number {
resProfit += Math.max(prices[i] - prices[i - 1], 0); resProfit += Math.max(prices[i] - prices[i - 1], 0);
} }
return resProfit; return resProfit;
}; }
``` ```
### Rust ### Rust
贪心: 贪心:
```Rust ```Rust
impl Solution { impl Solution {
fn max(a: i32, b: i32) -> i32 { fn max(a: i32, b: i32) -> i32 {
@ -304,6 +320,7 @@ impl Solution {
``` ```
动态规划: 动态规划:
```Rust ```Rust
impl Solution { impl Solution {
fn max(a: i32, b: i32) -> i32 { fn max(a: i32, b: i32) -> i32 {
@ -323,7 +340,9 @@ impl Solution {
``` ```
### C: ### C:
贪心: 贪心:
```c ```c
int maxProfit(int* prices, int pricesSize){ int maxProfit(int* prices, int pricesSize){
int result = 0; int result = 0;
@ -339,6 +358,7 @@ int maxProfit(int* prices, int pricesSize){
``` ```
动态规划: 动态规划:
```c ```c
#define max(a, b) (((a) > (b)) ? (a) : (b)) #define max(a, b) (((a) > (b)) ? (a) : (b))
@ -363,6 +383,7 @@ int maxProfit(int* prices, int pricesSize){
### Scala ### Scala
贪心: 贪心:
```scala ```scala
object Solution { object Solution {
def maxProfit(prices: Array[Int]): Int = { def maxProfit(prices: Array[Int]): Int = {