179. Largest Number
题目:
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.
链接:http://leetcode.com/problems/largest-number/
题解:
用数组中的数字组合出一个最大的数,返回String。直接的想法是对数组中的数字做一个排序,再用排序好的数字来输出结果。这里排序的过程需要用一个Comparator,比较简便的方法是我们把int[]换乘String[],然后对String[]中的每个String进行逐字比较。
之前还想过求数字最高位数的方法,比如给定n,那么最高位c = n / Math.pow(10, log10(n)),但比较的话还得转成Integer,比较麻烦,不如用String Comparator方便。
Time Complexity - O(nlogn), Space Complexity - O(n)
public class Solution {
public String largestNumber(int[] nums) {
if(nums == null || nums.length == 0)
return "";
String[] numsAsStrings = new String[nums.length];
for(int i = 0; i < nums.length; i++)
numsAsStrings[i] = String.valueOf(nums[i]);
Arrays.sort(numsAsStrings, new Comparator<String>() { //anonymous new comparator
public int compare(String s1, String s2) {
String s1s2 = s1 + s2;
String s2s1 = s2 + s1;
return s2s1.compareTo(s1s2);
}
});
if(numsAsStrings[0].equals("0")) // for corner case "00"
return "0";
StringBuilder sb = new StringBuilder();
for(String str : numsAsStrings)
sb.append(str);
return sb.toString();
}
}
二刷:
沿用了一刷的方法。但用Lambda就比较慢,可能还是Java编译器的问题。
Java:
public class Solution {
public String largestNumber(int[] nums) {
if (nums == null || nums.length == 0) return "";
int len = nums.length;
String[] strs = new String[len];
for (int i = 0; i < len; i++) strs[i] = String.valueOf(nums[i]);
Arrays.sort(strs, (String s1, String s2) -> (s2 + s1).compareTo(s1 + s2));
if (strs[0].charAt(0) == '0') return "0";
StringBuilder sb = new StringBuilder();
for (String str : strs) sb.append(str);
return sb.toString();
}
}
测试:
179. Largest Number的更多相关文章
- leetcode 179. Largest Number 、剑指offer33 把数组排成最小的数
这两个题几乎是一样的,只是leetcode的题是排成最大的数,剑指的题是排成最小的 179. Largest Number a.需要将数组的数转换成字符串,然后再根据大小排序,这里使用to_strin ...
- [LeetCode] 179. Largest Number 最大组合数
Given a list of non negative integers, arrange them such that they form the largest number. Example ...
- Java 特定规则排序-LeetCode 179 Largest Number
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- leetcode 179. Largest Number 求最大组合数 ---------- java
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- JavaScript中sort方法的一个坑(leetcode 179. Largest Number)
在做 Largest Number 这道题之前,我对 sort 方法的用法是非常自信的.我很清楚不传比较因子的排序会根据元素字典序(字符串的UNICODE码位点)来排,如果要根据大小排序,需要传入一个 ...
- Java for LeetCode 179 Largest Number
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- 179. Largest Number -- 数字字符串比较大小
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- [LeetCode] 179. Largest Number 解题思路
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- 179. Largest Number(INT, String)
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
随机推荐
- Eclipse JavaEE设置内置浏览器和外部浏览器
Eclipse JavaEE设置内置浏览器和外部浏览器 我们在使用Java EE版本的Eclipse开发Java Web程序时,Eclipse会有一个默认的内置浏览器查看网页的效果,如下图 但是内置浏 ...
- sqlplus 可以登录 plsql 不能登录
最开始我以为是system用户被锁定了,但是解锁后仍然不可以登录.大神指导之后可以了,说是缺少监听器,解决过程如下: 1.将“tnsnames.ora”和“listener.ora”两个文件里的“lo ...
- oracle 之路目录
oracle linux单机安装 oracle windows单机安装创建实例卡死解决办法 oracle rac安装 HPDL380G8平台11.2.0.3 RAC实施手册 pl-sql develo ...
- winfrom LED时钟
public sealed class Clock : PictureBox { public Clock() { SetStyle(ControlStyles.AllPaintingInWmPain ...
- Hibernate 老外的完整教程
http://viralpatel.net/blogs/hibernate-many-to-many-annotation-mapping-tutorial/
- PHP学习之开发工具
刚接触PHP,必然需要一套完整的开发工具.每个语言都有各种各样的编辑工具.采用了相对来说比较了解的Eclipse来作为开发工具. 1.要是用Eclipse需要安装JDK或JRE(Eclipse本身就是 ...
- CentOS-6.5安装配置JDK-7|Tomcat-8
安装说明 系统环境:centos-6.5 安装方式:rpm安装 软件:jdk-7-linux-x64.rpm 下载地址:http://www.oracle.com/technetwork/java/j ...
- Delphi通过Map文件查找内存地址出错代码所在行
一 什么是MAP文件 什么是 MAP 文件?简单地讲, MAP 文件是程序的全局符号.源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方.任何时候使用,不需要有额外的程序进行支持.而且,这是唯 ...
- Speech Patterns (string)
People often have a preference among synonyms of the same word. For example, some may prefer "t ...
- IOS 学习教程
IOS 学习教程http://www.gaixue.com/course/236#### 讲课http://wenku.baidu.com/view/6786064fe518964bcf847c63. ...