关于leetcode:leetcode122-Best-Time-to-Buy-and-Sell-Stock-II-买卖股票的最佳时机-II简单

5次阅读

共计 871 个字符,预计需要花费 3 分钟才能阅读完成。

一、题目粗心

标签: 贪婪

https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii

给你一个整数数组 prices,其中 prices[i] 示意某支股票第 i 天的价格。

在每一天,你能够决定是否购买和 / 或发售股票。你在任何时候 最多 只能持有 一股 股票。你也能够先购买,而后在 同一天 发售。

返回 你能取得的 最大 利润。

示例 1:

输出:prices = [7,1,5,3,6,4]
输入:7
解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能取得利润 = 5 – 1 = 4。
  随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能取得利润 = 6 – 3 = 3。

 总利润为 4 + 3 = 7。

示例 2:

输出:prices = [1,2,3,4,5]
输入:4
解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 5)的时候卖出, 这笔交易所能取得利润 = 5 – 1 = 4。
  总利润为 4。

示例 3:

输出:prices = [7,6,4,3,1]
输入:0
解释:在这种状况下, 交易无奈取得正利润,所以不参加交易能够取得最大利润,最大利润为 0。

提醒:

  • 1 <= prices.length <= 3 * 104
  • 0 <= prices[i] <= 104

    二、解题思路

    每天能够有限次交易,然而只能持有一支股票。想有最大利润,就得高价买高价卖。如果第二天价格比以后价格高,咱们就卖出,把差价退出利润中。若先天价格更高,咱们还能够在第二天卖出后再买入。以此类推,遍历残缺个数组后即可取得最大利润。

    三、解题办法

    3.1 Java 实现

    public class Solution {public int maxProfit(int[] prices) {
          int res = 0;
          for (int i = 1; i < prices.length; i++) {int tmp = prices[i] - prices[i-1];
              res += tmp > 0 ? tmp : 0;
          }
          return res;
      }
    }

    四、总结小记

  • 2022/7/29 原来把题目弄清楚、思路理分明后,写代码是这么简略
正文完
 0