Say you have an array for which the ith element is the price of a given stock on day i.
Design an algorithm to find the maximum profit. You may complete at most two transactions.
public class Solution {
public int maxProfit(int[] prices) {
int res = 0;
if (prices==null || prices.length<=1) {
return 0;
}
int[] arrA = new int[prices.length];
int min = prices[0];
for (int i = 1; i < prices.length; i++) {
min = Math.min(min, prices[i]);
arrA[i] = Math.max(arrA[i-1], prices[i]-min);
}
int max = prices[prices.length-1];
int[] arrB = new int[prices.length];
for (int i = prices.length-2; i >= 0; i--) {
max = Math.max(max, prices[i]);
arrB[i] = Math.max(max-prices[i], arrB[i+1]);
}
for (int i = 0; i < prices.length; i++) {
res = Math.max(res, arrA[i]+arrB[i]);
}
return res;
}
}
本文介绍了一个算法,用于在股票市场中通过最多完成两次交易来获取最大利润。算法通过遍历价格数组,计算每日买入和卖出的最佳时机,从而实现最大化收益。
532

被折叠的 条评论
为什么被折叠?



