首页 > 试题广场 >

把数组排成最小的数

[编程题]把数组排成最小的数
  • 热度指数:518049 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。
1.输出结果可能非常大,所以你需要返回一个字符串而不是整数
2.拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0

数据范围:
0<=len(numbers)<=100
示例1

输入

[11,3]

输出

"113"
示例2

输入

[]

输出

""
示例3

输入

[3,32,321]

输出

"321323"
头像 牛客题解官
发表于 2020-06-01 15:07:40
精华题解 题目的主要信息: 有一个数字中全部都是非负整数 将其随意拼接后要使拼接后的数字整体最小 返回这个最小数字的字符串形式 举一反三: 学习完本题的思路你可以解决如下题目: JZ41. 数据流中的中位数 方法一:重载比较的排序(推荐使用) 知识点:排序 排序就是将一个线性数据的元素按照一定的次序进行重 展开全文
头像 LaN666
发表于 2021-06-19 15:47:33
精华题解 32、把数组排成最小的数 解题思路: 要注意题目的意思是把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 这道题目可以看成是一道排序的题目,因为要使得结果最小,那么给出的整数要怎么排列呢?其实就可以转化为 A+B 与 B+A 之间比较的问题(注意:这里的A+B并不是A加上B, 展开全文
头像 GhostLX
发表于 2021-06-19 04:36:16
精华题解 题目陈述 大意:给定一个数组,,将数组凭借成一个字符串,使得字符串的字典序最小 算法1:朴素做法 算法思路 显然,n个数排序有种序列 最朴素的做法,我们在这种排序中,每个都拼接成字符串,依次比较,记录最小的即可 当然,这个算法的重点的是如何生成一个数组的全排序方法1: 递归生成全排序 这边简单提 展开全文
头像 江南好___
发表于 2021-06-22 16:22:00
精华题解 描述 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 示例 输入:[3,32,321] 输出:"321323"题目要求求出拼接后数字最小,并 展开全文
头像 Peterliang
发表于 2021-07-18 22:33:47
精华题解 题意分析 首先,给我们一个数组,需要我们将这个数组进行一个排列,然后对数组的所有的数字按照排列的顺序进行拼接,拼接成字符串,问我们得到的最小的字符串。 思路分析 解法一 全排列 既然说了存在一种排列的方式使得最后的结果最小,那么就可以使用全排列进行求解,我们利用全排列来枚举所有的情况,然后 展开全文
头像 一叶浮尘
发表于 2019-08-18 12:08:35
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 之前没有做过这道题目,刚开始的时候想要进行暴力破解,但是最终想想还是算了吧,因此只能求助于别人的优秀的做法,果然这道题目 展开全文
头像 初憶
发表于 2019-08-07 01:07:33
把数组排成最小的数 第一种方法:耗时21ms 由题可知我们需要对数组中的数进行排序。那么排序需要满足满足什么规则呢?首先,我们并不能直接用(o1,o2)->o2.compareTo(o1),因为很明显当数字一样大时长度并不能作为排序的依据。该题的正确解法为短的字符串循环与长的字符串作比较,代码 展开全文
头像 学无止境呀~
发表于 2019-09-06 20:57:55
32. 把数组排成最小的数 题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路将数组中的数字连接起来,排成一个最小的数字。将'大数'往后放'小数'往前放,如何 展开全文
头像 丶jack
发表于 2019-11-26 19:42:14
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Solution { public String PrintMinNumber(int [ 展开全文
头像 阿凌_
发表于 2021-09-23 22:48:59
import java.util.Arrays; import java.util.stream.Collectors; public class Solution { public String PrintMinNumber(int[] numbers) { return 展开全文
头像 飙风玫瑰
发表于 2019-07-27 10:43:39
# -*- coding:utf-8 -*- class Solution:     def PrintMinNumber(self, numbers):         # write code here     &n 展开全文
头像 郭家兴0624
发表于 2019-08-11 10:24:01
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路:先将数组中每个元素转换成String类型,然后进行排序,如果str(a) + str(b) > str 展开全文
头像 LiuNing
发表于 2020-05-05 17:16:35
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 解题思路 对vector容器内的数据进行排序,按照 将a和b转为string后,若 a+b<b+a,a排在 展开全文
头像 一起juan吧
发表于 2021-10-06 17:33:43
//将数字放入数组,利用数组的排序函数sort(可以根据自定义的规则来排序), //排序后越小的数放在越高的次位,这样到最后的排成数字才能最小 //std::sort要求函数对象,或是静态/全局函数指针,非静态成员函数指针不能直接传递给std::sort。 bool cmp(const string 展开全文
头像 平平无奇刷题小天才
发表于 2021-10-07 15:37:49
两行代码,极简题解 function PrintMinNumber(numbers) { // write code here numbers.sort((a, b) => +(a + '' + b) - +(b + '' + a)) return numbers.jo 展开全文