算法题:
提供一个序列,完成对这个序列的分割。要求分割后的两个序列彼此差值最小
def find(arr):
arr.sort()
if not arr:
return ([], [])
elif len(arr) == 2:
return (arr[:1], arr[1:])
elif len(arr) == 1:
return (arr[0:], [])
else:
max_num = arr[-1]
max_two_num = arr[-2]
max_list, min_list = find(arr[:-2])
max_list.append(max_two_num)
min_list.append(max_num)
if sum(max_list) > sum(min_list):
return (max_list, min_list)
else:
return (min_list, max_list)
arr = [1, 46, 3, 8, 6, 4561, 4642, 45, 8, 9, 155, 1784, 100]
a1, a2 = find(arr)
print(a1, a2)
# 返回结果
# [1, 3, 8, 45, 46, 1784, 4561] [6, 8, 9, 100, 155, 4642]