Python求解数组重新组合求最小值(优酷)

题目描述:题目:含有n个元素的整型数组,将这个n个元素重新组合,求出最小的数,如(321,3,32,) 最小数为321323

 

题目分析:

将数组中所有元素填充到个数相等,填充的数字为最后一位的数字,如这个case所示,填充之后为{321,333,322},然后按大小排序,

排序之后将填充的数字去掉,然后拼接之后的数字就为最小数,即排序之后为{321,322,333},去掉填充数字为{321,32,3},即为321323

 

Python实现

def mergeMinValue(lst):
    #生成字符串列表
    lst = list(map(str,lst))
    #获得最长的数字长度
    m = len(max(lst,key=len))
    #根据原来的整数得到新的列表 
    newList = [(i,i+i[-1]*(m-len(i)))for i in lst]
    #对补齐的数字字符进行排序
    newList.sort(key=lambda item:item[1])
    #对原来的数字进行拼接
    result = ''.join((item[0] for item in newList))
    return int(result)

 

测试样例:

lst = [321,3,31,38,93]

print(mergeMinValue(lst))

测试输出

3132133893

 

资料参考:Python小屋

转载于:https://www.cnblogs.com/lateink/p/6486592.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值