题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
先附上代码,后面具体讲解一下为何这样写以及代码中涉及到的python方法
# -*- coding:utf-8 -*-
class Solution:
def PrintMinNumber(self, numbers):
if not numbers:
return "" #没有数字,返回空
lmb = lambda n1, n2:int(str(n1)+str(n2))-int(str(n2)+str(n1))
array = sorted(numbers, cmp=lmb)
return ''.join([str(i) for i in array])
先介绍一下lambda的用法,我自己刚开始也是比较懵逼的
对于lambda搞清下面三个问题就够了
1.lambda是什么,
2.为什么要用lambda,
3.如何使用lambda
用例子说明问题:
For Q1:
g = lambda x:x+1
>>g(1) =2
lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体用函数