题目描述:
给你一个 正 整数数组 nums
。
将 nums
分成两个数组:nums1
和 nums2
,并满足下述条件:
- 数组
nums
中的每个元素都属于数组nums1
或数组nums2
。 - 两个数组都 非空 。
- 分区值 最小 。
分区值的计算方法是 |max(nums1) - min(nums2)|
。
其中,max(nums1)
表示数组 nums1
中的最大元素,min(nums2)
表示数组 nums2
中的最小元素。
返回表示分区值的整数
输入输出实例:
思路:这个题目要求我们返回这个数组里面相差最小的两个数的差就行了(题目中长度肯定是大于等于2的),如果直接暴力法用两层循环找每两个数的差取最小的那个可能会超时,所以我们先用sort函数对数组排序,然后让每两个相邻的数字取差的绝对值,返回最小的就好了。
class Solution:
def findValueOfPartition(self, nums: List[int]) -> int:
#排序找两个相邻的最小差值
nums.sort()
min_ans = inf
for i in range(len(nums)-1):
min_ans = min(min_ans,abs(nums[i]-nums[i+1]))
return min_ans
(实例有给的最小差值非常大,所以我们的min_ans一定要定义为无穷大)