最小合并数

难度一星题1:最小合并数 输入一组整数,要求输出由输入整数中最多3个整数按任意顺序合并(拼接)成最小整数。数组大小n<100,每个输入数据的范围0<x<10000,输入数组包含的整数可能小于3个。输入输出示例:

输入:

1 51,2,34,58,116 输出:

1 23451 这题主要考察数理逻辑,如果把输入整数转换为字符串拼接然后转换为整数稍微麻烦一点。这里直接根据题目条件中数据范围0<x<10000,将输入整数中最小的3个全部对其到10000位,直接整数比较就行,但是这样引入了一个边角情况的处理需要留意

a=[51,2,34,58,1,116]

a.sort()
nums=a[:3]
print(nums)
res=[]

def backtack(nums,tmp):
    if len(tmp)==3 and tmp not in res:
        res.append(tmp[:])
    if len(tmp)>3:
        return
    for i in range(len(nums)):
        tmp.append(nums[i])
        backtack(nums[:i]+nums[i+1:],tmp)
        tmp.pop()
backtack(nums,[])
print(res)
cases=[]
for i in res:
    cases.append(''.join(list(map(str,i))))
print(min(cases))

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务