关键点
排序后的前四个数 一定有一个是下界 同时对称 排序后的后四个数 一定有一个是上界 (但发现对称,也就是只有4个情况)
数据结构
排序后 构建 分别以 前四个数为下界 的 最大值与最小值的最小差 的 数组 返回数组中的最小值
举例
如 83 2 32 43 54 37 80 排序后 2 32 37 43 54 80 83
以2为下界,最大值与最小值的最小差为 41 (54,80,83 全变成小于等于43的)
以32为下界 ,最大值与最小值的最小差为 22(2变成大于等于32的,80,83全变成小于等于54的)
以37为下界,最大值与最小值的最小差为 43
以43为下界,最大值与最小值的最小差为 40
故返回40
代码
class Solution(object):
def minDifference(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
if(n<=4):
return 0
sort_nums=sorted(nums)
min=sort_nums[n-4]-sort_nums[0]
for i in range(1,4):
if(sort_nums[n-4+i]-sort_nums[0+i]<min):
min=sort_nums[n-4+i]-sort_nums[0+i]
return min
|