在Go(Golang)中如何找出数组中增加的元素之间的最大差异

107 阅读1分钟

概述

给出一个数组。目标是找到两个索引i和j的值之间的最大差异。

  • j > i
  • arr[j] > arr[i] 。

如果没有这样的索引存在,则返回-1

例子1

Input: intervals = [8, 2, 6, 5]
Output: 4
Explanation: 6-2 = 4

例2

Input: intervals = [8, 3, 2, 1]
Output: -1
Explanation: Condition is not satified

程序

下面是同样的程序。

package main

import "fmt"

func maximumDifference(nums []int) int {
	lenNums := len(nums)
	if lenNums == 0 || lenNums == 1 {
		return -1
	}
	minElement := nums[0]

	maxDifference := -1

	for i := 1; i < lenNums; i++ {
		diff := nums[i] - minElement
		if diff > maxDifference && diff != 0 {
			maxDifference = diff
		}

		if nums[i] < minElement {
			minElement = nums[i]
		}
	}

	return maxDifference
}

func main() {
	output := maximumDifference([]int{8, 2, 6, 5})
	fmt.Println(output)

	output = maximumDifference([]int{8, 3, 2, 1})
	fmt.Println(output)

}

输出

4
-1