需求:数组[6,2,10,1,4,8,9]每个元素代表每天股价,求最高收益
//利润等于买入价减去卖出价
//不持有:当天股价大于第二天股价时,不买,当小于第二天股价时买入
//持有:当天股价大于第二天股价时,卖出,小于第二天股价时不卖
func priceArr(arr []int) int {
price := 0 //持有股价
sum := 0 //利润
for i := 0; i < len(arr) - 1; i++ {
if arr[i] < arr[i+1] && price == 0 { //不持有时买入
price = arr[i]
}
if arr[i] > arr[i+1] && price > 0 { //持有时卖出
sum += arr[i] - price
price = 0
}
}
if price > 0 { //最后没卖
return arr[len(arr)- 1] - price + sum
}
return sum
}
//测试
var arr = []int{6, 2, 10, 1, 4, 8, 9}
res := priceArr(arr)
fmt.Println(res)
//结果
16