博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【刷算法】把数组排成最小的数
阅读量:6715 次
发布时间:2019-06-25

本文共 707 字,大约阅读时间需要 2 分钟。

题目描述

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

分析

把数组按照可以达到最终最小数字的顺序重新排列一遍,但是有一个问题,排序的衡量标准是什么,也就是说两个数字怎么判断谁前谁后?

例如[3,5,32,321],3和5很好判断,肯定是3在前最后的排成的数字比较小,但是5和32呢?所以,排序的衡量标准应该是比较这两个数字排成的数字的大小,例如5和32,可以排成532和325,325<532,所以32得排在前面。

代码实现

function PrintMinNumber(numbers){    if(numbers.length === 0)        return '';    if(numbers.length === 1)        return numbers[0];        numbers.sort(function(a,b) {        var astr = a.toString(), bstr = b.toString();                var ab = +(astr+bstr), ba = +(bstr+astr);        return ab - ba;    })        var res = '';    for(var i = 0;i < numbers.length;i++){        res += numbers[i];    }        return +res;}复制代码

转载地址:http://ytelo.baihongyu.com/

你可能感兴趣的文章
测试工程师常用的工具
查看>>
【已解决】如图,说我磁盘不够,看到var目录下有的个隐藏文件夹占了46G,不知道怎么删除...
查看>>
vmware网络的连接方式
查看>>
AngularJs的UI组件ui-Bootstrap分享(五)——Pager和Pagination
查看>>
Python基础21_类与类型, MRO, C3算法, super()
查看>>
IBM磁盘阵列及文件系统的管理
查看>>
Algs4-2.1.34罕见情况
查看>>
jQuery的属性操作
查看>>
BroadcastReceiver
查看>>
Python学习-字典的常见用法
查看>>
Python 异常处理
查看>>
前端 回顾
查看>>
按键精灵是否可以编写函数或方法,简化脚本,使脚本更加模块化?
查看>>
BZOJ3626LCA(树剖+线段树+LCA+差分)
查看>>
事件的产生,传递以及响应链
查看>>
练习4.4 萨提亚冰山理论应用
查看>>
python pandas 对各种文件的读写 IO tools
查看>>
【转】ios 抓取 tcp/udp 包
查看>>
Struts2入门案例——基于Struts2任意两数据的代数和
查看>>
E - Trees on the level
查看>>