每日一题 --- 2016. 增量元素之间的最大差值[力扣][Go]

简介: 每日一题 --- 2016. 增量元素之间的最大差值[力扣][Go]

题目:

给你一个下标从 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
  }
}


相关文章
|
3月前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
42 1
|
3月前
【LeetCode 27】347.前k个高频元素
【LeetCode 27】347.前k个高频元素
42 0
|
1月前
|
Go 索引
go语言修改元素
go语言修改元素
32 6
|
3月前
【LeetCode 06】203.移除链表元素
【LeetCode 06】203.移除链表元素
35 0
|
3月前
【LeetCode-每日一题】移除元素
【LeetCode-每日一题】移除元素
36 0
|
5月前
|
存储 算法
LeetCode第83题删除排序链表中的重复元素
文章介绍了LeetCode第83题"删除排序链表中的重复元素"的解法,使用双指针技术在原链表上原地删除重复元素,提供了一种时间和空间效率都较高的解决方案。
LeetCode第83题删除排序链表中的重复元素
|
5月前
|
算法 索引
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
这篇文章介绍了LeetCode第34题"在排序数组中查找元素的第一个和最后一个位置"的解题方法,通过使用双指针法从数组两端向中间同时查找目标值,有效地找到了目标值的首次和最后一次出现的索引位置。
LeetCode第34题在排序数组中查找元素的第一个和最后一个位置
|
5月前
|
Python
【Leetcode刷题Python】剑指 Offer II 082. 含有重复元素集合的组合
解决LeetCode平台《剑指 Offer II 082. 含有重复元素集合的组合》题目的Python代码实现,通过深度优先搜索算法找出所有和为特定目标值的数字组合,并在搜索过程中通过排序和跳过重复元素来避免解集中出现重复组合。
44 2
|
5月前
|
算法
LeetCode第27题移除元素
这篇文章介绍了LeetCode第27题"移除元素"的解题方法,通过使用双指针技巧,有效移除数组中特定值的元素并返回新数组的长度。
|
5月前
|
算法 索引 Python
【Leetcode刷题Python】34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
解决LeetCode "在排序数组中查找元素的第一个和最后一个位置" 问题的方法。第一种方法是使用两次二分查找,首先找到目标值的最左边界,然后找到最右边界。第二种方法是利用Python的list.index()方法,先正序找到起始位置,再逆序找到结束位置,并给出了两种方法的Python实现代码。
72 0