122. 买卖股票的最佳时机 II
写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点
1.贪心 5
- 如何想到?
- 想了几个例子,然后实际验证,想到了这个方法
- 解题步骤
- 只要后一天的股票价格大于前一天的价格那么就累加
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.size()==0)return 0;
int temp=0,sum=0,gap=0;
for(int i=1;i<prices.size();i++){
gap=prices[i]-prices[i-1];
if(gap>0) sum+=gap;
}
return sum;
}
};
2.dp
- 如何想到?
- 123
- 解题步骤
- 456
class Solution {
public:
int maxProfit(vector<int>& prices) {
//动态dp
int n=prices.size();
if(n<2)
return 0;
// 0:持有现金
// 1:持有股票
// 状态转移:0 → 1 → 0 → 1 → 0 → 1 → 0
vector<vector<int>>dp(n,vector<int>(2));
dp[0][0]=0;
dp[0][1]=-prices[0];
for(int i=1;i<n;i++){
dp[i][0]=max(dp[i-1][0],dp[i-1][1]+prices[i]);
dp[i][1]=max(dp[i-1][1],dp[i-1][0]-prices[i]);
}
return dp[n-1][0];
}
};
时间复杂度/空间复杂度分析/面试场景如何作答
-
面试官不同要求下的解题方式
-
方法一时间空间复杂度
- 时间复杂度:
- 空间复杂度:
- 方法二时间复杂度
- 时间复杂度:
- 空间复杂度: