算法题/把数组排成最小的数

来源:互联网 发布:淘宝优惠券推广 编辑:程序博客网 时间:2024/06/06 11:04

python2.7

输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题的算法

最简单想法:将数组全排列,找出最小的值

#coding:utf-8def arrangement(a):        if len(a) == 0:                return [[]]        else:                result = []                for i in a:                        temp = a[:]                        temp.remove(i)                        for j in arrangement(temp):                                result.append([i]+j)                return resultdef get_min_number(a):        s = ''.join(a)        s_arr = list(s)        result = arrangement(s_arr)        k = int(''.join(result[0]))        for i in result[1:]:                if int(''.join(i))< k:                        k = int(''.join(i))        return kprint(get_min_number(['321','32','3']))

这里写图片描述

原创粉丝点击