📌  相关文章
📜  由数组的数字组成的两个数字的最小和(1)

📅  最后修改于: 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)。