184.Largest Number-最大数(中等题)
来源:互联网 发布:淘宝看不到卖家中心 编辑:程序博客网 时间:2024/06/05 10:40
最大数
题目
给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。
注意事项
最后的结果可能很大,所以我们返回一个字符串来代替这个整数。样例
给出 [1, 20, 23, 4, 8],返回组合最大的整数应为8423201。
挑战
在 O(nlogn) 的时间复杂度内完成。
题解
本题很容易想到先排序数组再组合成最大数。难点就在于在排序中如何进行大小判断。
1.如果两个数长度相同,则只需从高位到低位依次比较就可以了,如果第一位相同的情况出现那么再看第二位,即45应在40之前。如果位数不等,如4应当放在40和45之前、之后还是中间。由于高位都是4,而40的低位是0,45的低位是5,4的低位是4,所以顺序应该是45,4,40。这个方法处理起来比较繁琐。
2.可以直接比较两个数不同组合的大小。如比较4和45可以通过比较445和454的大小来确认4和45的先后位置。但在数字较大时会溢出,而且LintCode好似无法使用BigDecimal,所以该方法也无法使用。
3.利用2的思路,我们可以将整型数组转换成字符串数组,对字符串”445”和”454”进行比较,简答且无溢出问题。
public class Solution { /** *@param num: A list of non negative integers *@return: A string */ public String largestNumber(int[] num) { String[] A = new String[num.length]; int max = 0; for (int i=0;i<num.length;i++) { A[i] = String.valueOf(num[i]); max = Math.max(max,num[i]); } if (max == 0) { return "0";//如果数组中数字全部是0则无需进行组合 } Arrays.sort(A,new Comparator<String>() { @Override public int compare(String o1, String o2) { return (o2+o1).compareTo(o1+o2); } }); StringBuilder sb = new StringBuilder(); for (int i=0;i<num.length;i++) { sb.append(String.valueOf(A[i])); } return sb.toString(); }}
Last Update 2016.10.26
0 0
- 184.Largest Number-最大数(中等题)
- LeetCode 179. Largest Number(最大数)
- *[Lintcode]Largest Number 最大数
- [lintcode]最大数 Largest Number
- Largest Number 拼凑成最大的数
- Largest Number组合最大数算法详解
- 4.Ugly Number II-丑数 II(中等题)
- 205.Interval Minimum Number-区间最小数(中等题)
- 518.Super Ugly Number-超级丑数(中等题)
- 查找数组中最大的两个数(Find two Largest Number)
- leetcode_[python/C++] 179. Largest Number(数字组合成最大数)
- leetcode179-Largest Number(把数组排成最大的数)
- LeetCode--Largest Number(最大数字)Python
- Largest Number(最大数字)
- 83.Single Number II-落单的数 II(中等题)
- 84.Single Number III-落单的数 III(中等题)
- 196.Find the Missing Number-寻找缺失的数(中等题)
- 391.Number of Airplanes in the Sky-数飞机(中等题)
- MyBatis mapper.xml文件中的curd语句
- 通杀所有系统的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻击
- 判断日期Calendar大小
- 图片模糊
- Netty服务器入门
- 184.Largest Number-最大数(中等题)
- MATLAB技巧——imshow多张图片
- pdf转换成jpg格式快准狠的转换方法
- 使用spring定时器注解实现定时任务
- AutoZoomInImageView的使用动画3秒后自动跳转页面
- Javascript获取屏幕分辨率、当前浏览器窗口大小
- LeetCode解题报告 357. Count Numbers with Unique Digits [medium]
- 记一次后台存储方案优化
- 九乘九数独