买卖股票的最佳时机
题目

这是一道简单题,这道题很明显是可以使用动态规划中的特殊思路:贪心算法。也是求最大。
思路:
-
先考虑初始返回值
result,肯定是0,因为自己减自己。 -
遍历价格列表
prices并执行两步:- 更新前
i天的最低价格,即最低买入价格minPrice; - 更新前
i天的最高利润result,即选择result和prices[i]-minPrice中的最大值 ;
- 更新前
最后直接返回result。
这个就相当于在一次数组遍历中,一直计算第i个被买入能得到的最大利润,然后一直贪心的选择最大值。
代码:
class Solution {
public int maxProfit(int[] prices) {
//先初始化一个BP数值为0,遍历的时候每次都比较是不是最小值,然后每次更新最大的利润。
int result = 0;
int minCost = Integer.MAX_VALUE;
for(int i=0;i<prices.length;i++){
minCost = Math.min(minCost,prices[i]);
result = Math.max(result,prices[i]-minCost);
}
return result;
}
}
浙公网安备 33010602011771号