index
title: 把数组排成最小的数 date: 2019-08-21T11:00:41+08:00 draft: false categories: offer
题目
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321}
,则打印出这三个数字能排成的最小数字为321323
。
解题思路
最直接的办法就是,找到数组中数字的所有排列组合,找到最小的
对于 {{}}m, n{{}},可以组成 {{}}mn , nm{{}} 这两个数,如果 {{}}mn < nm{{}} 那么,{{}}m{{}} 应该在 {{}}n{{}} 之前
对于一组数,可以通过上述规则进行排序,依次打印出来就是最小的数
由于组合之后的数可能超出 int 的表示范围,注意使用字符串来处理大数问题
Last updated
Was this helpful?