题目 剑指 Offer 45. 把数组排成最小的数 思路1 将整数数组转化成字符串数组 然后使用Arrays工具类的sort方法帮助我们排序 代码 class Solution { public String minNumber(int[] nums) { int length = nums.length; // 将整数数组转化成字符串数组 String[] str = new String[length]; for (int i = 0; i < length; i++) { str[i] =…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3, 32, 321},则打印出这3个数字能排成的最小数字321323. 思路 不好的方法:求出所有全排列(类似字符串的排列 ),将数字拼起来,最后求出所有的最小值.这效率太低,且没有考虑到大数问题. 好的方法:观察规律,自行定义一种排序规则. 对于数字m和n,可以拼接…
题目信息 时间: 2019-07-01 题目链接:Leetcode tag: 快速排序 难易程度:中等 题目描述: 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例1: 输入: [10,2] 输出: "102" 示例2: 输入: [3,30,34,5,9] 输出: "3033459" 提示 1. 0 < nums.length <= 100 解题思路 本题难点 此题求拼接起来的 "最小数字&q…
题目描述 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例 1: 输入: [10,2] 输出: "102" 示例 2: 输入: [3,30,34,5,9] 输出: "3033459" 提示: 0 < nums.length <= 100 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0 来源:力扣(LeetCode) 链接:htt…
剑指Offer:把数组排成最小的数[45] 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如,输入数组是{3.32.321},则打印出来的这3个数字能拼接成的最小数字是321323. 方法论 简要思路 最暴力的方法是把这个数组中的所有数字的全排列暴力出来,然后找个最小的.但是显然我们不能这么做. 我们应该定义一个排序规则,: 先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来.关键就是制定排序…
[剑指Offer]把数组排成最小的数 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 解题方法 见过的题,再做就知道怎么做了,这个题的做法很巧妙,把要比较的两个数字进行不同顺序的前后拼接,进行大…
题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 输入: 输入可能包含多个测试样例.对于每个测试案例,输入的第一行为一个整数m (1<=m <=100)代表输入的正整数的个数.输入的第二行包括m个正整数,其中每个正整数不超过10000000. 输出: 对应每个测试案例,输出m个数字能排成的最小数字. 样例输入: 样例输出: 解题思路: 首先,最普通的思路就…
本文算法使用python3实现 1 题目描述:   输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组 $ [3,32,321] $ ,则打印出这三个数字能排成的最小数字为 $ 321323 $ .   时间限制:1s:空间限制:32768K 2 思路描述:   大致思路:   (1)我们可以先思考只有两个数字的情况: $ [3,32] $ ,可以看出来 $ 332 > 323 $ 因此需要把数组改变为 $ [32,3] $ :   (2)对…
问题描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.   示例 1: 输入: [10,2] 输出: "102" 示例 2: 输入: [3,30,34,5,9] 输出: "3033459"   提示: 0 < nums.length <= 100 说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0 代码 class Solution {…
[题目]输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. * 例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323.[思路]1 首先将整数数组转化成字符串数组str: 2 写一个定制排序comparator,对str进行排序.排序后得到的结果321,32,3(<)  排序规则:ab<ba a<b;  ab>ba a>b;  ab=ba a=b 3 得到排序后结果. ****定制排序: int compa…