买卖股票最佳时机运用的算法
时间: 2023-07-10 12:37:16 浏览: 132
买卖股票最佳时机是一个比较经典的动态规划问题,其算法思路如下:
1. 定义状态:设 dp[i] 表示前 i 天的最大利润。
2. 状态转移方程:考虑第 i 天的情况,我们有两种选择:
a. 如果第 i 天不卖出股票,那么状态转移方程为 dp[i] = dp[i - 1]。
b. 如果第 i 天卖出股票,那么状态转移方程为 dp[i] = prices[i] - minprice,其中 minprice 表示前 i - 1 天的最低股票价格。
3. 边界条件:dp[0] = 0,即第 0 天的最大利润为 0。
4. 最终结果:遍历 dp 数组,找到其中的最大值即为最终的最大利润。
Java代码实现如下:
```
public int maxProfit(int[] prices) {
if (prices == null || prices.length == 0) {
return 0;
}
int minprice = prices[0];
int maxprofit = 0;
for (int i = 0; i < prices.length; i++) {
maxprofit = Math.max(maxprofit, prices[i] - minprice);
minprice = Math.min(minprice, prices[i]);
}
return maxprofit;
}
```
时间复杂度为 $O(n)$,空间复杂度为 $O(1)$。
阅读全文