LeetCode121. 买卖股票的最佳时机
发布日期:2021-05-08 06:09:44 浏览次数:22 分类:精选文章

本文共 884 字,大约阅读时间需要 2 分钟。

为了解决这个问题,我们需要找到买入股票的最佳时机,以便在未来某一天卖出股票时获得最大利润。我们可以通过遍历股票价格数组,记录到当前为止的最低价格,然后计算每一步的利润来实现这一点。

方法思路

  • 问题分析:我们需要找到一个买入点和一个卖出点,使得卖出点的股票价格尽可能高,而买入点的股票价格尽可能低。利润是卖出价格减去买入价格。
  • 记录最低价格:在遍历数组时,记录到当前为止的最低价格。
  • 计算利润:对于每个可能的卖出点,计算当前的利润,并跟踪最大利润。
  • 时间复杂度:该算法的时间复杂度为O(n),因为只需遍历数组一次。空间复杂度为O(1),因为只使用了几个变量。
  • 解决代码

    public int maxProfit(int[] prices) {    if (prices.length <= 1) {        return 0;    }    int minInput = prices[0];    int maxProfit = 0;    for (int i = 1; i < prices.length; i++) {        if (prices[i] < minInput) {            minInput = prices[i];        }        int profit = prices[i] - minInput;        if (profit > maxProfit) {            maxProfit = profit;        }    }    return maxProfit;}

    代码解释

  • 初始化:首先检查数组长度,如果长度小于等于1,直接返回0,因为无法进行交易。
  • 遍历数组:从第二个元素开始遍历数组。对于每个元素,检查它是否是当前最低价格,如果是,则更新最低价格。
  • 计算利润:计算当前元素与最低价格的差值,即为当前利润。如果当前利润大于已知的最大利润,则更新最大利润。
  • 返回结果:遍历结束后,返回最大利润。
  • 这个方法确保了在每一步都能找到最优的买入价格,从而最大化利润。

    上一篇:LeetCode122.买卖股票的最佳时机2Golang版
    下一篇:LeetCode119.杨辉三角2Golang版

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年03月30日 13时42分25秒