买卖股票的最佳时机

题目

image

这是一道简单题,这道题很明显是可以使用动态规划中的特殊思路:贪心算法。也是求最大。

思路:

  • 先考虑初始返回值result,肯定是0,因为自己减自己。

  • 遍历价格列表 prices 并执行两步:

    • 更新前i天的最低价格,即最低买入价格minPrice
    • 更新前i天的最高利润 result,即选择resultprices[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;
    }
}
posted on 2024-04-17 18:54  一个痴迷于技术的码农  阅读(24)  评论(0)    收藏  举报