📅  最后修改于: 2023-12-03 15:11:20.171000             🧑  作者: Mango
在一个数组中,找到两个数字,使它们的和最小。如果数组为空,返回0。
此题可以使用排序的方法解决。先将数组排序,然后将排序后的数组中相邻两个数字相加(即第一个和第二个、第三个和第四个……)得到一个新的数组,然后再将新数组中的所有数字相加即可。
下面是一种Python实现的方式:
def min_sum(nums):
if not nums:
return 0
# 将数组排序
nums.sort()
# 对排序后相邻两个数字求和
sums = []
for i in range(0, len(nums), 2):
sums.append(nums[i] + nums[i+1] if i+1 < len(nums) else nums[i])
# 返回相邻两数之和的总和
return sum(sums)
# 测试用例
print(min_sum([])) # 0
print(min_sum([1,2,3,4,5])) # 9
print(min_sum([8,4,5,3,1,9])) # 10
本题通过排序的方法来解决。这种方法的时间复杂度为O(nlogn),由于是原地排序,所以空间复杂度为O(1)。