美文网首页
45.把数组排成最小的数(中等)

45.把数组排成最小的数(中等)

作者: 今天柚稚了么 | 来源:发表于2020-02-19 22:37 被阅读0次

考点:本题考查时间效率

题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

思路一:全排列

思路二:优化

找到一个排序规则,数组根据这个规则排序之后能排成一个最小的数字。也就是比较两个数字m和n,确定一个规则判断m和n哪个应该排在前面,为了避免int型溢出的问题,将数字转换为字符串。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
public class Solution {
    public String PrintMinNumber(int [] numbers) {
        int len = numbers.length;
         if (numbers == null || len == 0) {
            return "";
        }
        
        String str[] = new String[len];
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < len; i++) {
            str[i] = String.valueOf(numbers[i]);
        }
        //对字符串数组进行排序,传入比较规则,Arrays.sort可以传入一个comparator对象
        Arrays.sort(str, new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                return (s1 + s2).compareTo(s2 + s1);//如果指定的数与参数相等返回0。如果指定的数小于参数返回 -1。如果指定的数大于参数返回 1。
            }
        });
       //拼接结果字符串
        for (int i = 0; i < len; i++) {
            sb.append(str[i]);//排好序的数组中的数字依次打印出来
        }
        return sb.toString();
    }
}

相关文章

  • 45.把数组排成最小的数(中等)

    考点:本题考查时间效率 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中...

  • 【D35】把数组排成最小的数&复杂链表的复制&二叉搜索树与双向链

    剑指 Offer 45. 把数组排成最小的数[https://leetcode-cn.com/problems/b...

  • 把数组排成最小的数

    输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32...

  • 把数组排成最小的数

    题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{...

  • 把数组排成最小的数

    输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32...

  • 把数组排成最小的数

    输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32...

  • 把数组排成最小的数

    问题描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例...

  • 把数组排成最小的数

    题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{...

  • 把数组排成最小的数

    题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组...

  • 把数组排成最小的数

    题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组...

网友评论

      本文标题:45.把数组排成最小的数(中等)

      本文链接:https://www.haomeiwen.com/subject/qvdrfhtx.html