From 8491775ea4ed63a7b77dbe9a23303d1797afb7c3 Mon Sep 17 00:00:00 2001 From: "huangge1199@hotmail.com" Date: Mon, 6 Sep 2021 20:16:34 +0800 Subject: [PATCH] =?UTF-8?q?122:=E4=B9=B0=E5=8D=96=E8=82=A1=E7=A5=A8?= =?UTF-8?q?=E7=9A=84=E6=9C=80=E4=BD=B3=E6=97=B6=E6=9C=BA=20II?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/BestTimeToBuyAndSellStockIi.java | 67 +++++++++++++++++++ .../content/BestTimeToBuyAndSellStockIi.md | 42 ++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 src/main/java/leetcode/editor/cn/BestTimeToBuyAndSellStockIi.java create mode 100644 src/main/java/leetcode/editor/cn/doc/content/BestTimeToBuyAndSellStockIi.md diff --git a/src/main/java/leetcode/editor/cn/BestTimeToBuyAndSellStockIi.java b/src/main/java/leetcode/editor/cn/BestTimeToBuyAndSellStockIi.java new file mode 100644 index 0000000..8b7c366 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/BestTimeToBuyAndSellStockIi.java @@ -0,0 +1,67 @@ +//给定一个数组 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 。 +// +// +// 示例 2: +// +// +//输入: prices = [1,2,3,4,5] +//输出: 4 +//解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 +// 注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。 +// +// +// 示例 3: +// +// +//输入: prices = [7,6,4,3,1] +//输出: 0 +//解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。 +// +// +// +// 提示: +// +// +// 1 <= prices.length <= 3 * 10⁴ +// 0 <= prices[i] <= 10⁴ +// +// Related Topics 贪心 数组 动态规划 👍 1353 👎 0 + +package leetcode.editor.cn; + +//122:买卖股票的最佳时机 II +class BestTimeToBuyAndSellStockIi { + public static void main(String[] args) { + //测试代码 + Solution solution = new BestTimeToBuyAndSellStockIi().new Solution(); + System.out.println(solution.maxProfit(new int[]{7, 1, 5, 3, 6, 4})); + } + + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) + class Solution { + public int maxProfit(int[] prices) { + int result = 0; + for (int i = 1; i < prices.length; i++) { + result += Math.max(0, prices[i] - prices[i - 1]); + } + return result; + } + } +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/doc/content/BestTimeToBuyAndSellStockIi.md b/src/main/java/leetcode/editor/cn/doc/content/BestTimeToBuyAndSellStockIi.md new file mode 100644 index 0000000..313d75a --- /dev/null +++ b/src/main/java/leetcode/editor/cn/doc/content/BestTimeToBuyAndSellStockIi.md @@ -0,0 +1,42 @@ +

给定一个数组 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 。
+
+ +

示例 2:

+ +
+输入: prices = [1,2,3,4,5]
+输出: 4
+解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
+     注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
+
+ +

示例 3:

+ +
+输入: prices = [7,6,4,3,1]
+输出: 0
+解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
+ +

 

+ +

提示:

+ + +
Related Topics
  • 贪心
  • 数组
  • 动态规划

  • 👍 1353
  • 👎 0
  • \ No newline at end of file