【LeetCode笔记】剑指 Offer 45. 把数组排成最小的数(Java、字符串、Lambda)
文章目录
- 题目描述
- 思路 && 代码
- 二刷
题目描述
- 很 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)相关推荐
- 【LeetCode】剑指 Offer 45. 把数组排成最小的数
[LeetCode]剑指 Offer 45. 把数组排成最小的数 文章目录 [LeetCode]剑指 Offer 45. 把数组排成最小的数 package offer;import java.uti ...
- 【自定义排序规则】剑指 Offer 45. 把数组排成最小的数
我是小张同学,立志用更简洁的代码做更高效的表达 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例 1: 输入: [10,2] 输出: "1 ...
- 【算法】剑指 Offer 45. 把数组排成最小的数 【重刷】
1.概述 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个. 示例 1: 输入: [10,2] 输出: "102" 示例 2: 输入: ...
- 力扣—剑指 Offer 45. 把数组排成最小的数
题目 解决方法 参看官方解决思路,就是将数列中的元素两两拼接.如'2'+'3'='23'<'3'+'2'='32'则2在3的左边.由于该题不用考虑组合后第一位是零的情况,所以这样将所有的元素比较 ...
- 《剑指offer》-- 把数组排成最小的数、丑数、二进制中1的个数、表示数值的字符串、替换空格
一.把数组排成最小的数: 1.题目: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为 ...
- 剑指OFFER之把数组排成最小的数(九度OJ1504)
2019独角兽企业重金招聘Python工程师标准>>> 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32 ...
- 剑指offer:把数组排成最小的数
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 解题思路 依 ...
- 《剑指offer》把数组排成最小的数
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 解析方式一:非常 ...
- 剑指Offer之把数组排成最小的数
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 解题思路 把 ...
最新文章
- c语言链表创建递归,递归创建二叉树c语言实现+详细解释
- 别再盲目学 Python 了!
- LIST组件使用总结
- Google Code Jam 2014 总结
- Knative 实践:从源代码到服务的自动化部署
- 佳能g3800故障灯说明书_车子保养后跑了没多久跳出一个扳手样子的灯,是什么意思?...
- 命中率_三分命中率暴涨19%!卡皇进化已无弱项,顶级3D练成何须布拉
- js中注册标识符流程
- LeetCode-----算法448.找到所有数组中消失的数字
- 【leetcode刷题笔记】Sqrt(x)
- ubuntu环境配置之cuda10+tensorflow-gpu
- 力扣-83 删除排序链表中的重复元素
- 服务器系统蓝牙驱动怎么安装,win7蓝牙驱动安装教程
- 你的短信接口真的安全吗?
- 【复杂网络】网络科学导论学习笔记-第五章节点重要性与相似性
- JavaScript贷款计算器
- 案例-修改-回显数据
- openwrt编译smartdns_老大静态编译openwrt平台mipsel_24kc架构的smartdns时报错,求救!...
- Pandas使用技巧-apply,条件筛选
- 红黄绿小灯泡标记实现
热门文章
- oracle clob截取_Oracle数据库设计规范建议
- 收件服务器主机名未响应,邮箱收件服务器主机名是什么
- OpenCV与图像处理学习十七——OpenCV人脸检测(含代码)
- 吴恩达《机器学习》学习笔记三——多变量线性回归
- pandas分析各国家交易情况
- 王爽 汇编语言第三版 第9章 转移指令的原理
- 无法初始化链接服务器 (null) 的 OLE DB 访问接口 Microsoft.Jet.OLEDB.4.0 的数据源对象。
- 同步锁 php,python线程中同步锁详解
- 个别学生计算机辅导计划,网络学院计算机基础统考辅导计划.doc
- r语言 柱状图加星号_R语言绘制带有显著性字母标记的柱状图