题目描述:
解题思路:
这道题可以用动态规划的方法去求最大利润。首先定义一个dp数组存放利润。假设第一天买进,因为第一天买进不卖出,所以利润为0,即dp[0] = 0;设置一个min表示最小值,因为只有设置最小值,我们才知道什么时候买进是最低价。思路是:今天卖出的利润和前一天卖出的利润进行比较,哪个利润大就存储哪天的利润。返回最后一天的利润就是股票的最大利润。
代码实现:
class Solution {
public int maxProfit(int[] prices) {
if(prices.length == 0) return 0;
int[] dp = new int[prices.length];
dp[0] = 0; int min = prices[0];
for(int i = 1; i < prices.length; i++){
if(min > prices[i]) min = prices[i];
dp[i] = Math.max(dp[i - 1], (prices[i] - min));
}
return dp[prices.length - 1];
}
}
执行结果: