文章作者:Tyan
博客:noahsnail.com | 优快云 | 简书
1. Description

2. Solution
**解析:**Version 1,两层循环遍历,O(N^2)。
- Version 1
class Solution:
def maximumDifference(self, nums: List[int]) -> int:
length = len(nums)
diff = -1
for i in range(length):
for j in range(i+1, length):
if nums[j] > nums[i]:
diff = max(diff, nums[j] - nums[i])
return diff
**解析:**Version 2,从左向右遍历,minimum始终保持左半部分最小值,如果当前数字num比minimum大,求二者的difference,取difference最大值,O(N)。
- Version 2
class Solution:
def maximumDifference(self, nums: List[int]) -> int:
length = len(nums)
diff = -1
minimum = nums[0]
for num in nums:
if num > minimum:
diff = max(diff, num - minimum)
minimum = min(minimum, num)
return diff
本文介绍了两种解决最大数差问题的算法。Version1采用双层循环,时间复杂度为O(N^2),而Version2通过从左向右遍历,维护最小值,将时间复杂度降低到O(N)。这两种方法对比展示了算法效率的提升。
232

被折叠的 条评论
为什么被折叠?



