拼多多4月3日笔试编程题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_36811967/article/details/89004258

第一题

给一个偶数个数的数组,每两个数组合成一个数后使得最大最小数之差最小:
很简单,先把数组排序,然后把第一个和最后一个数组合,第二个和倒数第二个数组合。。。。。。得到组合后的数组,然后最大值减去最小值就得到结果。

第二题

给很多个0到9这10个数,取a+b个数组成长度为a和b的两个数,前面可以有0,使得他两乘积最小:
想了下,测试了下,先找到较小数,然后把0放入较小数中,对剩余的数一个一个再放入两个数中,这样乘积最小:

# -*- coding:utf-8 -*-
__author__ = 'ShawDa'

def get_res(counts, a, b):
    if counts[0] >= min(a, b) or (a+b)>sum(counts):
        return 0
    min_num, max_num, nums = min(a, b), max(a, b), []
    for i, count in enumerate(counts[1:]):
        nums += [i+1]*count
    A, B = [0]*counts[0], []  # 一人一个
    for i, num in enumerate(nums):
        if len(A) == min_num:
            break
        if i%2 == 0:
            A.append(num)
        else:
            B.append(num)
    B += nums[i:i+max_num-len(B)]
    A = int(''.join(list(map(str, A))))
    B = int(''.join(list(map(str, B))))
    return A*B


counts = list(map(int, input().split()))
a = int(input())
b = int(input())
print(get_res(counts, a, b))

第三题

leetcode原题,简单的二维动态规划,就是这个:leetcode72. 编辑距离,很经典的一题。

猜你喜欢

转载自blog.csdn.net/sinat_36811967/article/details/89004258
今日推荐