19 把数组排成最小的数

Posted ghjnwk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了19 把数组排成最小的数相关的知识,希望对你有一定的参考价值。

0 引言

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

1 抽象问题具体化

举例:输入数组{3,32,321},打印出这三个数字能排成的最小数字.

  1. 3与32相比,32排在3的前边,得到序列32,3;

  2. 321与3相比,321排在3的前边;321与32相比,321排在32的前边,得到序列321,32,3;

  3. 打印序列321323.

2 具体问题抽象分析

  1. 定义排序规则:两个数字,从最高位数字开始比较。

    1.1 如果小,则排在前边;

    1.2 如果大,则排在后边;

    1.3 如果相等,则比较下一位,如果下一位不存在,则比较当前数与前一位的大。

      1.3.1 如果小于,则排前边;

      1.3.2 如果大于,则排后边;

      1.3.3 如果相等,则随意。

  2. 将所有数拼接起来,输出即可.

  3. 为了便于对数中的每个数字单独处理,将数转成字符串.

3 demo

4 代码优化


以上是关于19 把数组排成最小的数的主要内容,如果未能解决你的问题,请参考以下文章

刷题笔记(19)--把数组排成最小的数

把数组排成最小的数

剑指offer把数组排成最小的数

面试题:把数组排成最小的数

剑指offer三十二之把数组排成最小的数

Java 剑指offer(45) 把数组排成最小的数