给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
使用两层循环嵌套,分别拿后一天的与当前的做差,取出最大的那个差值:
func maxProfit(prices []int) int {
n := len(prices)
max := 0
for i := 0; i<n; i++{
for j := i+1; j<n; j++{
curmax := prices[j] - prices[i]
if curmax > max {
max = curmax
}
}
}
return max
}
我们尝试使用这种暴力思路进行解答,提交程序,发现超时了。
func maxProfit(prices []int) int {
const INT_MAX = int(^uint(0) >> 1)
min,max := INT_MAX,0
for _,v := range prices {
if v < min {
min = v
}else if v - min > max {
max = v - min
}
}
return max
}