《leetCode》:Largest Number
2016-03-24 20:20
423 查看
题目
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.
思路
找出组合中的最大数,最简单的思路就是:找出这些的全排列,然后取出最大值,但是这样的时间复杂度为n!。另外一种思路就是将这些数字对应的字符串进行排序(注意这里的排序并不是根据字符本身的比较进行排序,而是组合的排序),最后组合起来就可以了。public String largestNumber(int[] nums) { if(nums==null||nums.length<1){ return null; } //排序 int len=nums.length; String [] strs=new String[len]; for(int i=0;i<len;i++){ strs[i]=Integer.toString(nums[i]); } Arrays.sort(strs, new Comparator<String>(){ @Override public int compare(String str1, String str2) { StringBuilder sb=new StringBuilder(); StringBuilder sb2=new StringBuilder(); sb.append(str1).append(str2); sb2.append(str2).append(str1); return sb.toString().compareTo(sb2.toString()); } }); //将排序后的结果组合起来就好 if(strs[len-1].charAt(0)=='0'){//如果最高位都为0,则返回0 return "0"; } StringBuffer sb=new StringBuffer(); for(int i=len-1;i>=0;i--){ sb.append(strs[i]); } return sb.toString(); }
相关文章推荐
- Exception:在spring上用mybatis时报错
- windows客户端开发--客户端国际化中特殊处理(日期等)
- windows客户端开发--客户端国际化中特殊处理(日期等)
- linux系统调用过程分析与调试
- 经典排序之 快速排序
- 详解C#中的反射
- form_for的关系
- 【HPU】[1737]老王特警队
- MY GOAL
- 单片机设计经验设计技巧集锦
- java.堆栈浅层小知识
- POJ 1611 (并查集,按秩合并)
- Intellj IDEA 启动参数调优
- linux下测试磁盘的读写IO速度
- ffmpeg /x264视频流编解码末尾丢帧问题分析和解决
- grep用法
- poj 2506 Tiling 《大数加法+递推》
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) B. Bear and Compressing
- 最大公约数
- artDialog记录