go实现
最大、最小值为:
上一轮中最大值 乘以 当前值、上一轮中最小值 乘以 当前值、当前值
注意 oldMax 的用法,很重要
/** * * @param arr double浮点型一维数组 * @return double浮点型 */ func maxProduct(arr []float64 ) float64 { // write code here if len(arr) == 0 { return 0.0 } max, min, res := arr[0], arr[0], arr[0] for i:=1; i< len(arr); i++{ oldMax := max // 这里是关键!!!,不然 maxs中获取的max会覆盖 mins中需要的max // 最大、最小值为: // 上一轮中最大值*当前值、上一轮中最小值*当前值、当前值 // 注意 oldMax 的用法,很重要 max = maxs(max*arr[i], min*arr[i], arr[i]) min = mins(oldMax*arr[i], min*arr[i], arr[i]) if max > res { res = max } } return res } func maxs(x,y,z float64)float64 { max := x if y > x { max = y } if z > max { max = z } return max } func mins(x,y,z float64)float64 { min := x if y < x { min = y } if z < min { min = z } return min }