思路:其实思路还是挺简单的,只需要算出每个与前一个值得差数记录下来放到数组中,然后查询数据中连续和最大得值是多少,就是这道题得答案。主要是关系得公式为dp[i] = Math.max(dp[i],dp[i-1]+dp[i])。
public static int maxProfit(int[] prices) {
int[] dp = new int[prices.length];
dp[0] = -prices[0];
for(int i = 1;i<prices.length;i++){
dp[i] = prices[i] - prices[i-1];
}
int res = dp[0];
for(int i = 1;i<prices.length;i++){
dp[i] = Math.max(dp[i],dp[i-1]+dp[i]);
res = Math.max(res,dp[i]);
}
return res<0?0:res;
}
思路:只需要计算每个值与前一个数值得差值,如是是正数,说明可以盈利;只需要将这些正数相加就是最大盈利的值。
class Solution {
public int maxProfit(int[] prices) {
int res = 0;
int[] arr = new int[prices.length];
for(int i = 1;i<prices.length;i++){
arr[i] = prices[i] - prices[i-1];
}
for(int i = 1;i<prices.length;i++){
if(arr[i]>0)
res+=arr[i];
}
return res;
}
}