题目:
给你一个下标从 0 开始的整数数组 nums ,该数组的大小为 n ,请你计算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 nums[i] < nums[j] 。
返回 最大差值 。如果不存在满足要求的 i 和 j ,返回 -1 。
解题代码:
func maximumDifference(nums []int) int { // 遍历 时间复杂度O(n^2) //sum := 0 //for i := 0; i < len(nums); i++ { // for j := i + 1; j < len(nums); j++ { // if sum <= nums[j] - nums[i] { // sum = nums[j] - nums[i] // } // } //} //if sum == 0 { // return -1 //} //return sum // 记录前缀最小值 时间复杂度O(n) ans := -1 for i,preMin := 1,nums[0]; i < len(nums); i++ { if nums[i] > preMin { ans = max(ans,nums[i] - preMin) } else { preMin = nums[i] } } return ans } func max(a, b int) int { if a > b { return a } else { return b } }