1 题目描述
2 算法思路
动态规划:
- 状态定义:dp[i],代表以i结尾的子数组最大利润
- 转移方程:
- 前i日最大利润 = 前i - 1天的最大利润 和 第i天价格 - 前i天最低价格 的最大值
- dp[i] = max(dp[i - 1], prices[i] - min(price[i] , minPrice)
- 初始化,dp[0] = 0,
- 返回值 dp[n - 1]
3 代码
class Solution {
public int maxProfit(int[] prices) {
int minPrice = Integer.MAX_VALUE;
int profit = 0;
for(int price : prices){
minPrice = Math.min(minPrice,price);
profit = Math.max(profit,price - minPrice);
}
return profit;
}
}
4 提交结果