文章目录

  • 题目描述
  • 思路 && 代码
    • 二刷

题目描述

  • 很 nice 的一道题!花的时间也不会很多,还能复习复习 Lambda~

思路 && 代码

  • 核心思路:如果 x + y > y + x,说明 x 应该在 y 前面
  • 时间复杂度:排序所用的 O(NlogN)
class Solution {public String minNumber(int[] nums) {// 1. init:数字转化成字符串,存入数组中String[] strs = new String[nums.length];for(int i = 0; i < nums.length; i++) {strs[i] = String.valueOf(nums[i]);}// 2. 如果 x + y > y + x,说明 x 应该在 y 前面Arrays.sort(strs, (x, y) -> (x + y).compareTo(y + x));// 3. 排序结束,按序拼接即可StringBuilder res = new StringBuilder();for(String s : strs) {res.append(s);}return res.toString();}
}

二刷

  • 其实笔试遇到过,但是也一直没写得这么规范。
  • 开一个数组来存储字符串,可以节约很多效率(而非用到一次转化一次)
  • 再利用 Arrays.sort + Lambda,就很好看
class Solution {public String minNumber(int[] nums) {String[] numsString = new String[nums.length];for(int i = 0; i < nums.length; i++) {numsString[i] = String.valueOf(nums[i]);}Arrays.sort(numsString, (a, b) -> (a + b).compareTo(b + a));StringBuilder ans = new StringBuilder();for(String element : numsString) {ans.append(element);}return ans.toString();}
}

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

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

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

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

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

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

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

  4. 力扣—剑指 Offer 45. 把数组排成最小的数

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

  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. c语言链表创建递归,递归创建二叉树c语言实现+详细解释
  2. 别再盲目学 Python 了!
  3. LIST组件使用总结
  4. Google Code Jam 2014 总结
  5. Knative 实践:从源代码到服务的自动化部署
  6. 佳能g3800故障灯说明书_车子保养后跑了没多久跳出一个扳手样子的灯,是什么意思?...
  7. 命中率_三分命中率暴涨19%!卡皇进化已无弱项,顶级3D练成何须布拉
  8. js中注册标识符流程
  9. LeetCode-----算法448.找到所有数组中消失的数字
  10. 【leetcode刷题笔记】Sqrt(x)
  11. ubuntu环境配置之cuda10+tensorflow-gpu
  12. 力扣-83 删除排序链表中的重复元素
  13. 服务器系统蓝牙驱动怎么安装,win7蓝牙驱动安装教程
  14. 你的短信接口真的安全吗?
  15. 【复杂网络】网络科学导论学习笔记-第五章节点重要性与相似性
  16. JavaScript贷款计算器
  17. 案例-修改-回显数据
  18. openwrt编译smartdns_老大静态编译openwrt平台mipsel_24kc架构的smartdns时报错,求救!...
  19. Pandas使用技巧-apply,条件筛选
  20. 红黄绿小灯泡标记实现

热门文章

  1. oracle clob截取_Oracle数据库设计规范建议
  2. 收件服务器主机名未响应,邮箱收件服务器主机名是什么
  3. OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)
  4. 吴恩达《机器学习》学习笔记三——多变量线性回归
  5. pandas分析各国家交易情况
  6. 王爽 汇编语言第三版 第9章 转移指令的原理
  7. 无法初始化链接服务器 (null) 的 OLE DB 访问接口 Microsoft.Jet.OLEDB.4.0 的数据源对象。
  8. 同步锁 php,python线程中同步锁详解
  9. 个别学生计算机辅导计划,网络学院计算机基础统考辅导计划.doc
  10. r语言 柱状图加星号_R语言绘制带有显著性字母标记的柱状图