买卖股票的最佳时机II,简单难度,leetcode地址:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii
1.描述
给定一个数组 prices ,它的第i个元素 prices[i] 表示一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
示例 1:
1 | 输入: prices = [7,1,5,3,6,4] |
示例 2:
1 | 输入: prices = [1,2,3,4,5] |
2.题解
这种题基本上都可以采用暴力循环遍历法解决,这里就不多说了。除此之外,还可以采用动态规划的方法,比较复杂,但是这里介绍的是一个贪心算法。
这种解法的思想就是可能多次交易,只要今天价格比昨天高就卖出股票,然后把所有获利加在一起就是最大利润。
这里以[7,1,5,3,6,4]为例,推算步骤如下:
1 | 1 > 7 ? 不成立,利润 0 |
最后把所有例如相加,即是最大利润,但是其操作的过程并不是最优解,而且实际上过程中也没法这么操作,以为这些操作过程中并没有把亏损算进去。
这种算法虽然结果是正确的,但是过程却很奇妙,代码逻辑也不复杂。
参考代码:
1 | func maxProfit(prices []int) int { |