动态规划
class Solution {
public int maxProfit(int[] prices) {
if(prices == null || prices.length==0)return 0;
int[] mins = new int[prices.length];
int min = prices[0];
for(int i=0;i<mins.length;i++){
mins[i] = Math.min(min,prices[i]);
min = mins[i];
}
int[] dp = new int[prices.length];
dp[0] = 0;
for(int i=1;i<dp.length;i++){
dp[i] = Math.max(dp[i-1],prices[i]-mins[i]);
}
return dp[prices.length-1];
}
}
可以dp压缩一下,dp数组长度2就好
按题目
class Solution {
public int maxProfit(int[] prices) {
if(prices==null || prices.length==0)
return 0;
int min = prices[0];
int profit = 0;
for(int i=1;i<prices.length;i++){
if(prices[i] < min){
min = prices[i];
}
profit = Math.max(profit, prices[i]-min);
}
return profit;
}
}
欢迎大家评论,如果本文对您有帮助,请点个赞,您的点赞对我很重要!这次一定!感谢!!!
转发请注明出处呦!感谢!!!