左边和右边的最大差值
2019-01-05
1 无序
一个无序数组,找到左边的一个数和右边的一个数的最大差值
if __name__ == '__main__':
nums = [5, 11, 3, 10, 6, 1, 8, 4, 3, 2]
maxdiff = 0
minnum = nums[-1]
for i in range(len(nums)-2, -1, -1):
if nums[i] < minnum:
minnum = nums[i]
else:
maxdiff = max(maxdiff, nums[i] - minnum)
print(maxdiff)
2 有序
给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。
如果数组元素个数小于 2,则返回 0。
桶排序、计数排序和基数排序的时间复杂度和空间复杂度都是线性的。
试着用了桶排序、计数排序和基数排序都因为内存溢出没有运行通过。然后用了python自带的排序就通过了。
class Solution:
def maximumGap(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if len(nums) < 2:
return 0
if len(nums) == 2:
return abs(nums[0] - nums[1])
nums.sort()
maxdiff = 0
for i in range(len(nums)-1):
maxdiff = max(maxdiff, nums[i+1] - nums[i])
return maxdiff