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

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

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.

 

聪明方法:其实干嘛要挨个比呢,按最直接的方法,接起来,谁大谁在前:

可以换一下思路,要想比较两个数在最终结果中的先后位置,何不直接比较一下不同组合的结果大小?

举个例子:要比较3和34的先后位置,可以比较334和343的大小,而343比334大,所以34应当在前。

这样,有了比较两个数的方法,就可以对整个数组进行排序。然后再把排好序的数拼接在一起就好了。

首先把int 全部转换成string array,然后,自己写一个comparator,判断ab ba的大小,从而把a,b排序

然后把所有的连起来,记住,大的在后面,从后面开始连接。最后去掉前面的0;

1 public class Solution { 2      public String largestNumber(int[] num) { 3         if(num == null || num.length == 0) 4             return ""; 5          6         // Convert int array to String array, so we can sort later on 7         String[] s_num = new String[num.length]; 8         for(int i = 0; i < num.length; i++) 9             s_num[i] = String.valueOf(num[i]);10             11         // Comparator to decide which string should come first in concatenation12         Comparator
comp = new Comparator
(){13 @Override14 public int compare(String str1, String str2){15 String s1 = str1 + str2;16 String s2 = str2 + str1;17 return s2.compareTo(s1); // reverse order here, so we can do append() later18 }19 };20 21 Arrays.sort(s_num, comp);22 // An extreme edge case by lc, say you have only a bunch of 0 in your int array23 if(s_num[0].charAt(0) == '0')24 return "0";25 26 StringBuilder sb = new StringBuilder();27 for(String s: s_num)28 sb.append(s);29 30 return sb.toString();31 32 }33 }

 

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

你可能感兴趣的文章
深入实践Spring Boot3.2 控制器设计
查看>>
《微信小程序:开发入门及案例详解》—— 导读
查看>>
降低JRuby的内存占用的可能方法
查看>>
如何创建和使用Python CGI脚本
查看>>
RHCSA 系列(九): 安装、配置及加固一个 Web 和 FTP 服务器
查看>>
程序员专属健身操,大家一起动次打次浪起来!
查看>>
《jQuery、jQuery UI及jQuery Mobile技巧与示例》——3.7 示例:添加函数的返回结果...
查看>>
并发集合(一)引言
查看>>
如何写gdb命令脚本
查看>>
Android ListView展示不同的布局
查看>>
oracle 表(下)
查看>>
iOS宏(自己使用,持续更新)
查看>>
手把手玩转win8开发系列课程(3)
查看>>
NGINX引入线程池 性能提升9倍
查看>>
《淘宝技术这十年》读书笔记 (四). 分布式时代和中间件
查看>>
linux下mongodb定时备份指定的集合
查看>>
GNU Radio中流图的动态配置
查看>>
SMP架构多线程程序的一种性能衰退现象—False Sharing
查看>>
choose MariaDB 10 or 5.x
查看>>
oVirt JBAS server start failed, ajp proxy cann't server correct. ovirt-engine URL cann't open
查看>>