📑 题目:122. 买卖股票的最佳时机 II

🚀 本题 LeetCode 传送门

题目大意

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

解题思路

  • 这一题是第 121 题的加强版。要求输出最大收益,这一题不止买卖一次,可以买卖多次,买卖不能在同一天内操作。
  • 最大收益来源,必然是每次跌了就买入,涨到顶峰的时候就抛出。只要有涨峰就开始计算赚的钱,连续涨可以用两两相减累加来计算,两两相减累加,相当于涨到波峰的最大值减去谷底的值。这一点看通以后,题目非常简单。

代码

  1. package leetcode
  2. func maxProfit122(prices []int) int {
  3. profit := 0
  4. for i := 0; i < len(prices)-1; i++ {
  5. if prices[i+1] > prices[i] {
  6. profit += prices[i+1] - prices[i]
  7. }
  8. }
  9. return profit
  10. }