【python公司校招题】

【python摩拜】分石头?

2019-08-10  本文已影响0人  阿牛02

题目:已知石头重量数组。将石头分为质量最接近的两组。

输入描述:

数组,值为每个石头的质量

输出描述:

两组的质量(降序排序)

示例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))

上一篇下一篇

猜你喜欢

热点阅读