179. Largest Number
来源:互联网 发布:贪玩游戏 知乎 编辑:程序博客网 时间:2024/06/06 03:44
Given a list of non negative integers, arrange them such that they form the largest number.
For example, given [3, 30, 34, 5, 9]
, the largest formed number is 9534330
.
Note: The result may be very large, so you need to return a string instead of an integer.
题意:给定一个int数组,要求将数组中的数拼凑成一个最大的数,并以字符串的形式输出。如上例。
这个题事实上可以转化成一个排序的问题,那么需要怎么排序才能达到要求呢?下面我们分析一下:
首先,我们先举个例子,如上述给定的例子[3, 30, 34, 5, 9] ,我们自然知道第一位数为9才能拼凑成最大的数,接下来第二个数为5,但是第3个数就有点难以确认,因为剩下的3个数都是以3开头的分别是3,30和34,这个时候我们就需要通过组合来判断谁排在前面。
我们先分析3和30,如果我们将30排在前面,那么最大的数将是30****,如果我们将3排在前面,那么最大的数将是3****,并且此时最小为330***,显然大于前面的数,因此在3和30的比较过程中,3应该排在30的前面,换一种更加普遍的解释就是:a和b排序,如果ab>ba,那么a排在b前面,反之则b排在a前面。方法
经过这样一个排序的过程之后,我们只要将数组元素从头到尾拼凑成字符串即可;
下面是代码:
public class Solution { public String largestNumber(int[] nums) { String[] s = new String[nums.length]; int j = 0; for(int i : nums){ //将int数组转化为String数组便于排序 s[j++] = String.valueOf(i); } Arrays.sort(s,new Comparator<String>(){ //对String数组排序 public int compare(String s1, String s2){ String ss1 = s1+s2; String ss2 = s2+s1; return ss2.compareTo(ss1); } }); if(s[0].charAt(0) == '0') //排除特殊情况 return "0"; StringBuilder sb = new StringBuilder(); //将String数组转化成String for(String ss : s){ sb.append(ss); } return sb.toString(); }}这种解法在的时间复杂度为O(nlgn)(因为Arrays.sort()方法排序所需的时间复杂度),是一种不错的解法,最重要的是要想到这样一种排序的方法。
阅读全文
0 0
- [LeetCode]179.Largest Number
- LeetCode 179. Largest Number
- 179.Largest Number
- [leetcode] 179.Largest Number
- 【leetocde】179. Largest number
- [LeetCode]179. Largest Number
- 179. Largest Number LeetCode
- 179. Largest Number
- leetcode 179. Largest Number
- 179. Largest Number
- 179.Largest Number
- 179. Largest Number
- 179. Largest Number
- 179. Largest Number
- LeetCode 179. Largest Number
- [leetcode] 179. Largest Number
- leetcode.179. Largest Number
- 179. Largest Number
- (转载)mysql 启动错误(InnoDB: Operating system error number 13 )
- Linux环境下配置java
- 简单实现react.js语言国际化
- Java 匿名内部类 概述
- nyoj1000&&hdu4549 M斐波那契数列 递推公式+矩阵
- 179. Largest Number
- 萌新开始学安卓啦
- 悲观锁
- 使用ffmpeg合并视频文件的三种方法
- hive查询与优化
- 2017/8/9 离线赛
- 机器学习算法总结--随机森林
- react native Text实现限制行数不显示省略号,尾部直接截断
- JAVA常用日期比较操作说明