更新代码块

This commit is contained in:
youngyangyang04
2021-08-10 22:20:48 +08:00
parent c7c34dd824
commit 8a2d42013c
192 changed files with 552 additions and 552 deletions

View File

@@ -24,7 +24,7 @@
【贪心解法】
取最左最小值,取最右最大值,那么得到的差值就是最大利润,代码如下:
```C++
```CPP
class Solution {
public:
int maxProfit(vector<int>& prices) {
@@ -56,7 +56,7 @@ public:
代码如下:
```C++
```CPP
// 版本一
class Solution {
public:
@@ -79,7 +79,7 @@ public:
使用滚动数组,代码如下:
```C++
```CPP
// 版本二
class Solution {
public:
@@ -110,7 +110,7 @@ public:
收集每天的正利润便可,代码如下:
```C++
```CPP
class Solution {
public:
int maxProfit(vector<int>& prices) {
@@ -146,7 +146,7 @@ dp数组定义
代码如下注意代码中的注释标记了和121.买卖股票的最佳时机唯一不同的地方)
```C++
```CPP
class Solution {
public:
int maxProfit(vector<int>& prices) {
@@ -204,7 +204,7 @@ dp[i][4] = max(dp[i - 1][4], dp[i - 1][3] + prices[i]);
代码如下:
```C++
```CPP
// 版本一
class Solution {
public:
@@ -230,7 +230,7 @@ public:
当然大家可以看到力扣官方题解里的一种优化空间写法我这里给出对应的C++版本:
```C++
```CPP
// 版本二
class Solution {
public:
@@ -291,7 +291,7 @@ dp[i][2] = max(dp[i - 1][i] + prices[i], dp[i][2])
同理可以类比剩下的状态,代码如下:
```C++
```CPP
for (int j = 0; j < 2 * k - 1; j += 2) {
dp[i][j + 1] = max(dp[i - 1][j + 1], dp[i - 1][j] - prices[i]);
dp[i][j + 2] = max(dp[i - 1][j + 2], dp[i - 1][j + 1] + prices[i]);
@@ -300,7 +300,7 @@ for (int j = 0; j < 2 * k - 1; j += 2) {
整体代码如下:
```C++
```CPP
class Solution {
public:
int maxProfit(int k, vector<int>& prices) {
@@ -375,7 +375,7 @@ p[i][3] = dp[i - 1][2];
综上分析,递推代码如下:
```C++
```CPP
dp[i][0] = max(dp[i - 1][0], max(dp[i - 1][3]- prices[i], dp[i - 1][1]) - prices[i];
dp[i][1] = max(dp[i - 1][1], dp[i - 1][3]);
dp[i][2] = dp[i - 1][0] + prices[i];
@@ -384,7 +384,7 @@ dp[i][3] = dp[i - 1][2];
整体代码如下:
```C++
```CPP
class Solution {
public:
int maxProfit(vector<int>& prices) {
@@ -439,7 +439,7 @@ dp[i][1] 表示第i天不持有股票所得最多现金
以上分析完毕,代码如下:
```C++
```CPP
class Solution {
public:
int maxProfit(vector<int>& prices, int fee) {