您的位置:首页 > 其它

【Leetcode】Best Time to Buy and Sell Stock (DP)

2014-11-03 06:29 399 查看
Say you have an array for which the ith element is the price of a given stock on day i.

If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.

这道题看上去像是求最大值最小值问题,即在最小值点买入,最大值点卖出,这样就能获得最大利润。但是因为有可能出现最大值在最小值前面,所以不可能先卖再买。此方法行不通。
所以我们采用局部最优和全局最优来动态规划
public static int maxProfit(int[] prices) {
int localMax = 0;
int globalMax = 0;
for (int i = 0; i < prices.length - 1; i++) {
localMax = Math.max(0, localMax + prices[i + 1] - prices[i]);
globalMax = Math.max(globalMax, localMax);
}
return globalMax;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: