zoukankan      html  css  js  c++  java
  • 【剑指offer】把数组排成最小的数

    一、题目:

        输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

    二、思路:

        将数字转为字符串方便比较,逐位比较大小,该位更小的元素对应的数排前面,若是相同则比较下一位,若位数不同,则采用新的比较方式,此方式是,若a连接b<b连接a,那么更小的是a。然后对整个数组进行排序,再连成一个串,python的sorted函数中可以自定义比较函数。

    三、代码:

      

    # -*- coding:utf-8 -*-
    class Solution:
        def PrintMinNumber(self, numbers):
            # write code here
            list_numbers=[]
            for n in numbers:
                list_numbers.append(str(n))
            min_str=sorted(list_numbers,cmp=lambda a,b:cmp(a+b,b+a))
            s=''
            for si in min_str:
                s=s+si
            return s
  • 相关阅读:
    作业作业
    Alpha 冲刺 (4/10)
    Alpha 冲刺 (3/10)
    Alpha 冲刺 (2/10)
    Alpha 冲刺 (1/10)
    项目需求分析评审表
    项目需求分析答辩总结
    项目选题报告答辩总结
    UML
    各组项目答辩评分与存在问题
  • 原文地址:https://www.cnblogs.com/EstherLjy/p/9455853.html
Copyright © 2011-2022 走看看