题目:已知石头重量数组。将石头分为质量最接近的两组。
输入描述:
数组,值为每个石头的质量
输出描述:
两组的质量(降序排序)
示例1
输入
5,1,1,1,1,1
输出
5,5
分析:先采用快速排序的算法,设定两组值,然后遍历数组,进行数值的分配。
code:
arr = [5, 1, 1, 1, 1, 1]
def quick_sort(arr, left, right):
if left > right:
return arr
key = arr[left]
low = left
high = right
while left < right:
if left < right and arr[right] >= key:
right -= 1
arr[left] = arr[right]
if left < right and arr[left] <= key:
left += 1
arr[right] = arr[left]
arr[right] = key
quick_sort(arr, low, left - 1)
quick_sort(arr, left + 1, high)
return arr
arr = quick_sort(arr, 0, len(arr) - 1)
a=0 # 第一组的初始值
b=0 # 第二组的初始值
if len(arr) == 1:
a = arr[0]
for x in range(len(arr) - 1):
x = arr[x]
if(a==0):
a = arr[-1]
b = arr[0]
else:
if (abs(a + x - b) < abs(b + x - a)):
a += x
else:
b += x
print('{},{}'.format(a,b))
网友评论