32. A matriz de menor número alinhados
problema:
Digite um array de inteiros positivos, a matriz de todos os números dispostos em um número emendados, a emenda pode imprimir todos os números menor. 3,32,321 matriz de entrada} {por exemplo, imprima o número mínimo de três números pode ser disposto de modo a 321.323.
solução:
pensou:
Esta questão, nós precisamos fazer, se a + b <b + aa anterior ordenação regra linha, classificando os elementos do array, e podem ser emendados.
código python:
Aqui nota, porque a versão python3 removido a função cmp, e os parâmetros de função CMP classificadas, precisamos usar functools em cmp_to_key para substituir o parâmetro cmp originais.
Ele tem dois parâmetros passados cmp_to_key x, y quando x> y igual a 1 para voltar retorno 0, caso contrário -1
É mecanismo de trabalho na lista é a lista de elementos para comparação pareada, troca dois elementos quando o retorno CMP é positivo
# -*- coding:utf-8 -*-
import operator
import functools
class Solution:
def PrintMinNumber(self, numbers):
# write code here
if not numbers:
return ""
lmb=lambda x,y:int(str(x)+str(y))-int(str(y)+str(x))
num=sorted(numbers,key=functools.cmp_to_key(lmb))
return ''.join([str(i) for i in num])