📅  最后修改于: 2023-12-03 14:56:53.006000             🧑  作者: Mango
问题描述:给定两个数组nums1和nums2,找到两个数组中各自选取一个数相加所能得到的最小总和。
例如,给定两个数组nums1=[1,7,11],nums2=[2,4,6],则选取1和2相加得到3,选取1和4相加得到5,选取1和6相加得到7,选取7和2相加得到9,选取7和4相加得到11,选取7和6相加得到13,选取11和2相加得到13,选取11和4相加得到15,选取11和6相加得到17。因此,最小总和为3。
以下是Python实现:
import sys
def min_sum(nums1, nums2):
# 将两个数组分别从小到大排序
nums1.sort()
nums2.sort()
# 将每个数字位于nums1的元素在nums2中的下标记录下来
indices = [0] * len(nums1)
for i in range(len(nums1)):
j = 0
while j < len(nums2) and nums2[j] < nums1[i]:
j += 1
indices[i] = j
# 用sys.maxsize初始化最小总和
min_total = sys.maxsize
# 在两个数组中分别取出一个数相加
for i in range(len(nums1)):
min_total = min(min_total, nums1[i] + nums2[indices[i]])
if indices[i] > 0:
# 如果nums2中还有数字可用,再次尝试找到更小的总和
min_total = min(min_total, nums1[i] + nums2[indices[i] - 1])
return min_total
Markdown格式解释: