LeetCode – 买卖股票的最佳时机

  • 2019 年 10 月 4 日
  • 笔记

LeetCode第122题,难度简单。主要考察的就是对于贪心算法的

原题地址:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/

题目描述

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

来源:力扣(LeetCode)

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

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

基于题目的条件,其实抛开股票来看,需要计算的就是未来的数值比当前更高的时候,两者之间能相差多大。在一个数组里面,求分段的小->大的过程中的差值。

所以解法就是很简单的遍历整个数组,判断下一个元素是否大于当前元素,如果大于了,那就直接加上差值,否则跳过不管。这样的场景其实就是每天都进行买卖,只要不亏,就肯定买。

中文官网题解:

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

个人题解:

func maxProfit(prices []int) int {    max := 0    for i := 0; i < len(prices)-1; i++ {      if prices[i+1] > prices[i] {        max += prices[i+1] - prices[i]      }    }    return max  }

结果:

貌似就连测试用例数量都不见了…不过成绩并不是很快。