package
0.0.0-20230809123828-b071cee2968a
Repository: https://github.com/codehanhan/leetcode-go.git
Documentation: pkg.go.dev
# README
股票的最大利润
1. 题目描述
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?
2. 示例
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
限制 0 <= 数组长度 <= 10^5
3. 解题
由数据规模看,暴力法显然会超时
此题的重点在于求出max(nums[j]-nums[i]) (j > i)
尝试使用动态规划
设dp[i]为以下标i为结尾的最大利润值, in为买入点,out为卖出点
则有
dp[i] = max(dp[i-1], price[i]-min(prices[0:i]))
初试化为dp[0] = 0, 即首日利润为0