题目

解决方法

参看官方解决思路,就是将数列中的元素两两拼接。如’2’+‘3’=‘23’<‘3’+‘2’='32’则2在3的左边。由于该题不用考虑组合后第一位是零的情况,所以这样将所有的元素比较排序后直接拼接为str即可。

官方给出的解决代码

class Solution(object):def minNumber(self, nums):""":type nums: List[int]:rtype: str"""def quick_sort(l , r):if l >= r: returni, j = l, rwhile i < j:while strs[j] + strs[l] >= strs[l] + strs[j] and i < j: j -= 1while strs[i] + strs[l] <= strs[l] + strs[i] and i < j: i += 1strs[i], strs[j] = strs[j], strs[i]strs[i], strs[l] = strs[l], strs[i]quick_sort(l, i - 1)quick_sort(i + 1, r)strs = [str(num) for num in nums]quick_sort(0, len(strs) - 1)return ''.join(strs)

评论区代码

class Solution(object):def minNumber(self, nums):""":type nums: List[int]:rtype: str"""n=len(nums)if n==0:return ""for i in range(n):nums[i]=str(nums[i])for i in range(n):for j in range(i+1,n):if nums[i]+nums[j]>nums[j]+nums[i]:nums[i],nums[j]=nums[j],nums[i]return "".join(nums)

直接调用python内置函数

class Solution(object):def minNumber(self, nums):""":type nums: List[int]:rtype: str"""nums1=map(str,nums)new_nums=sorted(nums1,key=cmp_to_key(lambda x,y:int(x+y)-int(y+x)),reverse=False)return ''.join([str(num) for num in new_nums])

力扣—剑指 Offer 45. 把数组排成最小的数相关推荐

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

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

  2. 【自定义排序规则】剑指 Offer 45. 把数组排成最小的数

    我是小张同学,立志用更简洁的代码做更高效的表达 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例 1: 输入: [10,2] 输出: "1 ...

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

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

  4. 【算法】剑指 Offer 45. 把数组排成最小的数 【重刷】

    1.概述 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例 1: 输入: [10,2] 输出: "102" 示例 2: 输入: ...

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

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

  6. 剑指OFFER之把数组排成最小的数(九度OJ1504)

    2019独角兽企业重金招聘Python工程师标准>>> 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32 ...

  7. 剑指offer:把数组排成最小的数

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

  8. 《剑指offer》把数组排成最小的数

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

  9. 剑指Offer之把数组排成最小的数

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

最新文章

  1. 如何知道远程电脑某一端口是否打开?
  2. sklearn自学指南(part59)--神经网络模型(监督)
  3. 2019蓝桥杯省赛---java---B---6(特别数的和)
  4. 操作系统之进程管理:15、哲学家进餐问题
  5. elementUI表单验证
  6. 推荐算法工程师必备!!!协同过滤推荐算法总结
  7. java转安卓快吗_安卓开发者要从Java转到Kotlin吗?谷歌说后者支持更多
  8. python判断回文_Python实现判断一个整数是否为回文数算法示例
  9. 人工智能十大算法_中兴通讯人工智能白皮书(附下载)
  10. 第十四篇、贪吃蛇小游戏的制作
  11. 网站拒绝了你的请求服务器,服务器拒绝你的发送请求 - 卡饭网
  12. 入门3D游戏建模,是选择角色建模还是场景建模,看完你来选
  13. 实验室预约管理系统 实验设备 笔记本
  14. matlabadftest_怎样用matlab做时间序列平稳性检验
  15. 利用开源软件30分钟搭建自己的voip网络电话系统V1.1
  16. 软件定义存储(SDS)之入门
  17. 扫地机器人腿是咕噜_智能家居 篇一:洒哇地咔钟点狗智能擦地机初步评测:试水之作 略有失望...
  18. 关于手游app的开发
  19. 报表开发工具FastReport.NET的十大常见问题及解决方法
  20. 000210什么意思 error_黑莓系统错误代码BlackBerry 10 OS Error Codes释义及解决方法

热门文章

  1. vue搭配animate4版本失效
  2. 如何在局域网搭建php网站,【自己网站搭建】如何使用本地计算机,建立本地网站?怎样才能让局域网上的人都能访问到我电脑上的本地网站?...
  3. 怎么用Linux命令查看BIOS信息,LINUX下怎样获取主板的信息用到什么命令
  4. php框架原理 php初识,初识 PHP 7 源码整体框架
  5. eclipse svn插件安装_PHP 安装
  6. Vim 可视化模式入门
  7. ubuntu下caffe 安装记录(含GPU)
  8. 使用 PyMOL 将靶点与配体复合物中的靶点和配体拆出来
  9. leetcode679:24Game
  10. 【Java8】Stream 由函数生成流:创建无限流 - 实现斐波纳契数列