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 }
结果:
貌似就连测试用例数量都不见了…不过成绩并不是很快。