题目

解决方法

参看官方解决思路,就是将数列中的元素两两拼接。如’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. react textarea 空格为什么不换行_React 怎么实现预防XSS 攻击的
  3. 使用mysql-proxy 快速实现mysql 集群 读写分离
  4. 这 5 个能挣钱的 SpringBoot 项目,真TMD香!
  5. Ubuntu 16.04 桌面菜单栏 任务栏 标题栏消失的解决办法
  6. python-list:列表-元组-字符串
  7. 怎么样实现对一个对象的深拷贝
  8. SQL Server创建Job, 实现执行相同脚本而产生不同作业计划的探究
  9. scp复制本地文件到远程服务器,scp 本地文件到远程服务器
  10. SQL 优化之该走索引却不走索引的分析
  11. python中update是啥意思_python中update的基本使用方法详解
  12. PHP、JS、Python,数据库 获取今天是星期几了?[开发篇]
  13. JavaScript的排序算法
  14. C语言中位异或^简单讲解
  15. Mac显示隐藏文件目录
  16. 语音通知API - onealert的语音通告替代调研
  17. 07 不同 vcf 注释结果转 maf
  18. “她经济”时代,兜售少女心的乙女游戏将成新风口?
  19. 解决vmware虚拟机和宿主机之间不能复制粘贴问题
  20. requirejs的缺点

热门文章

  1. php 类名 属性6,php基础知识(类中属性和方法练习)--2018年9月6日14:01:15
  2. matlab nntool教程,Matlab nntool 应用实例教材.doc
  3. java对unicode转码,Unicode编码和中文互转(JAVA实现)
  4. Master of GCD 线段树区间更新
  5. 技巧|BurpSuite实现监听代理流量,隐匿身份
  6. 模型加速:WAE-Learning a Wavelet-like Auto-Encoder to Accelerate Deep Neural Networks
  7. 标注工具——Electron、HTML、CSSjs的学习笔记目录
  8. RuntimeError: Expected tensor for argument #1 ‘indices‘ to have scalar type Long; but got CUDAFloatT
  9. HDU3068 回文串 Manacher算法
  10. VMware安装Ubuntu 18.04虚拟机(镜像下载、硬盘分区、创建虚拟机、安装系统、桥接模式网络配置)