把数组排成最小的数

题目描述

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

大致思路

(1)我们可以先思考只有两个数字的情况: [3,32] ,可以看出来 332>323 因此需要把数组改变为 [32,3] ;

(2)对于有三个数字的情况: [3,32,321] 我们两两进行比较, 332>323 于是,将 3 与 32 交换位置变成 [32,3,321] 而 3321>3213 于是将 3 与 321 继续交换位置到 [32,321,3] ;接着我们继续使用 32 进行比较,由于 32321>32132 将 32与321 进行位置交换为 [321,32,3] 此时,将数组链接起来变成 321323 即为最小的数。

具体思路

(1)先将数字列表转化成字符串链表,这样便于在一个字符串后面直接加上另外一个字符串。也就是 "3"+"321"="3321" 。

(2)构造一个比较函数,当 str1+str2>str2+str1 时我们认为字符串 str1>str2 。

(3)将字符串列表按照比较函数的规定进行冒泡排序(或其它方法排序),将定义为”大”的字符串放到最后。而”小”的字符串放在前面。最后将字符串列表链接起来,便是所求。

列表转化成数组_30. 把数组排成最小的数相关推荐

  1. 《剑指offer》-- 把数组排成最小的数、丑数、二进制中1的个数、表示数值的字符串、替换空格

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

  2. 数据结构与算法--将数组排成最小的数

    将数组排成最小的数 题目:输入一个正整数的数组,将数组中所有数字拼接在一起排列成一个新的数,打印能拼接出来的所有数字中最小的一个, 案例:输入数组{12,4,55},则能打印出最小的数组是:12455 ...

  3. 【LeetCode笔记】剑指 Offer 45. 把数组排成最小的数(Java、字符串、Lambda)

    文章目录 题目描述 思路 && 代码 二刷 题目描述 很 nice 的一道题!花的时间也不会很多,还能复习复习 Lambda- 思路 && 代码 核心思路:如果 x + ...

  4. printf打印数组_(45)C++面试之把数组排成最小的数

    // 面试题45:把数组排成最小的数 // 题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼 // 接出的所有数字中最小的一个.例如输入数组{3, 32, 321},则打印出这3 ...

  5. 面试题45. 把数组排成最小的数

    题目: 面试题45. 把数组排成最小的数 题解: 1. 题解一: 2. 题解二: * 解题思路:* 先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来.关 ...

  6. 【剑指offer-Java版】33把数组排成最小的数

    把数组排成最小的数 难点在于比较规则的确定以及比较规则的正确性证明 比如:仅仅是局部的两个数字的顺序较小,如何保证整个数组按此规则进行排序后达到全局的较小 书中关于这一点的证明直接用的反证法,忘的差不 ...

  7. 33:把数组排成最小的数

    /*** 面试题33:把数组排成最小的数* 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.* 例如输入数组{3,32,321},则打印出这三个数字能排成的 ...

  8. 算法:把数组排成最小的数

    * @Description 把数组排成最小的数* @问题:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.* 例如输入数组{3,32,321},则打印出这 ...

  9. 【LeetCode】剑指 Offer 45. 把数组排成最小的数

    [LeetCode]剑指 Offer 45. 把数组排成最小的数 文章目录 [LeetCode]剑指 Offer 45. 把数组排成最小的数 package offer;import java.uti ...

最新文章

  1. 柱状图设置坐标轴名称_职场老鸟珍藏的柱状图技巧
  2. 职场健康:缓解脖子酸
  3. Kubernetes存储卷的使用
  4. 如何优雅地「蜗居」?
  5. c语言autoi函数如何使用,C++的auto声明、memset函数
  6. 微软著名程序员、歌手、NBA球队老板保罗·艾伦逝世,盖茨、库克等大佬发文悼念...
  7. SugarCRM 去掉 header 应用程序 下拉菜单
  8. Redhat 5.4 Oracle 10g RAC 删除节点
  9. Win10 如何把MP4格式视频制作成屏幕保护
  10. [技巧]QQ密技(一)
  11. Android Telephony通话状态更新消息上报流程
  12. 常见的shell介绍(与bash功能类似的应用程序有哪些)
  13. python3 + Scrapy爬虫学习之创建项目
  14. mysql pga_PGA的监控与调整
  15. Java的流程控制语句
  16. 《OpenGL超级宝典》环境搭建
  17. OC10 -- block / 多态
  18. 【粤拼】手工整理《岳阳楼记》
  19. NOIP提高组完善程序题目分析
  20. 知道swift为什么是面向协议编程么?不知道,还不快来学习!

热门文章

  1. linux 系统管理员面试,经典linux系统工程师系统管理员面试题
  2. 切片 go 去除第一个_golang学习笔记--切片slice 与数组 arr
  3. python可以做什么工作-济南大数据可以做哪些岗位
  4. python是什么意思啊-星号*在Python中是什么意思?
  5. 语音识别软件哪个好?好用的语音识别软件盘点
  6. QYResearch回顾:2017年中国汽车语音识别系统产量为1413万
  7. 计算机六级好考吗,计算机六级考什么?
  8. JavaScript自有属性与原型属性
  9. JavaScript-声明变量的关键字
  10. Nacos 介绍 --- 单机、集群部署