Leetcode121. 买卖股票的最佳时机

Leetcode121. 买卖股票的最佳时机

题目描述

/**
     * 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
     *
     * 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。
     * 设计一个算法来计算你所能获取的最大利润。
     *
     * 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
     *
     */

思路分析

  1. 选择股票买卖的最佳时机,可以使用暴力遍历的思想
  2. 使用双层循环,定义一个变量记录利润,然后不停的判断并更新此变量即可
  3. 优化
    • 使用一次循环,定义两个变量,一个变量记录最低股票价格,一个变量记录最大利润
    • 在一次遍历过程中更新两个遍历即可

源码及分析

 /**
     * @param prices 记录股票的集合
     * @return 获取的最大利润
     */
    public int maxProfit(int[] prices) {
        //记录最低股票
        int minStock = Integer.MAX_VALUE;
        //记录最大获益
        int maxProfit = 0;
        //遍历数组,更新最低和最大获益
        for (int i = 0; i < prices.length; i++) {
            if (prices[i] < minStock) {
                minStock = prices[i];
            } else if ((prices[i] - minStock) > maxProfit) {
                maxProfit = prices[i] - minStock;
            }
        }
        return maxProfit;
    }
posted @ 2021-09-22 22:18  mx_info  阅读(14)  评论(0编辑  收藏  举报