博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
179. Largest Number
阅读量:6263 次
发布时间:2019-06-22

本文共 2044 字,大约阅读时间需要 6 分钟。

题目:

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.

链接:

题解:

用数组中的数字组合出一个最大的数,返回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
() { //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();    }}

 

测试:

转载地址:http://lhdpa.baihongyu.com/

你可能感兴趣的文章
第6章 Android的Drawable
查看>>
Python--私有
查看>>
Ps操作技巧(快捷键大全)
查看>>
你可能并不需要消息队列
查看>>
移动端兼容
查看>>
css3翻书效果
查看>>
[转]通过零拷贝实现有效数据传输
查看>>
Android基于box2d开发弹弓类游戏[二]-------------游戏界面的搭建&移动游戏场景
查看>>
spring mvc 接受数组
查看>>
syslog服务器配置
查看>>
visual studioC#调用MATLAB生成的DLL
查看>>
ArrayList,LinkedList源码解析
查看>>
java推荐书籍及下载(持续更新)
查看>>
解决iframe周围的空白问题 td自适应iframe高度
查看>>
雷达标定
查看>>
[解决]小程序要求的 TLS 版本必须大于等于 1.2
查看>>
jQuery箭头切换图片 - 学习笔记
查看>>
第七周编程总结
查看>>
济南-1031试题解题报告
查看>>
最短路径(迪杰斯特拉算法)- 数据结构和算法64
查看>>