资讯专栏INFORMATION COLUMN

【刷算法】把数组排成最小的数

SimpleTriangle / 3337人阅读

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

题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{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;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96383.html

相关文章

  • 算法】计数排序 + 各个排序算法的稳定性

    摘要:将大的先放在后面,再下一次可以把相同大的放在上一次的之前,顺序改变。 之前介绍的排序算法: 【算法】插入排序——希尔排序+直接插入排序_Rinne’s blog-C...

    不知名网友 评论0 收藏0
  • 【数据结构从0到1】第六篇:排序(下)

    摘要:我们将数据放大为,最后两个无序,前面的都有序,直接插入排序的比较次数就是次,而冒泡排序的比较次数就是次。我们就做到将一个数排成有序了。 文章目录 前言一、常见...

    baiy 评论0 收藏0
  • 思维导图整理大厂面试高频数组补充1: 最接近的三数之和 和 三数之和 的两个不同之处, 力扣16

    摘要:此专栏文章是对力扣上算法题目各种方法的总结和归纳整理出最重要的思路和知识重点并以思维导图形式呈现当然也会加上我对导图的详解目的是为了更方便快捷的记忆和回忆算法重点不用每次都重复看题解毕竟算法不是做了一遍就能完全记住的所 ...

    longmon 评论0 收藏0
  • ❤️思维导图整理大厂面试高频数组10: 3种方法彻底解决中位数问题, 力扣4❤️

    此专栏文章是对力扣上算法题目各种方法的总结和归纳, 整理出最重要的思路和知识重点并以思维导图形式呈现, 当然也会加上我对导图的详解. 目的是为了更方便快捷的记忆和回忆算法重点(不用每次都重复看题解), 毕竟算法不是做了一遍就能完全记住的. 所以本文适合已经知道解题思路和方法, 想进一步加强理解和记忆的朋友, 并不适合第一次接触此题的朋友(可以根据题号先去力扣看看官方题解, 然后再看本文内容). 关...

    XanaHopper 评论0 收藏0
  • <LeetCode天梯>Day031 验证二叉搜索树(递归+中序遍历) | 初级算法 | Pytho

    摘要:有效二叉搜索树定义如下节点的左子树只包含小于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。而我们二叉搜索树保证了左子树的节点的值均小于根节点的值,根节点的值均小于右子树的值,因此中序遍历以后得到的序列一定是升序序列。 ...

    Genng 评论0 收藏0

发表评论

0条评论

SimpleTriangle

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<