Lintcode算法
2018-06-18 00:13:52来源:未知 阅读 ()
题目:
给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。
样例
给出 [1, 20, 23, 4, 8]
,返回组合最大的整数应为8423201
。
思路:直接交换两个数,然后判断交换之后的大小,并根据交换之后的结果,对数组进行排序,使其从数组的开始到数组的结束,组成的数字的最大。另外因为考虑到,可能会出现数据出现溢出的现象,需要先把整数的数组转化为字符串类型的数组。例如:对于2和23,谁应该排在前边,那么我们就对223和232进行字符串比大小,将组合成结果大的数字的23放在2的前面。
class Solution { /** * @param nums: A list of non negative integers * @return: A string */ public String largestNumber(int[] nums) { // write your code here String[] s=new String[nums.length]; for(int i=0;i<nums.length;++i){ s[i]=Integer.toString(i); } //对字符串数组进行排序 Arrays.sort(s,new Comparator<String>(){ @Override public int compare(String o1, String o2) { //升序是前者减去后者,降序是后者减去前者。因为排序规则,就是结果就是将数组重新排序,能够从头到尾,实现最大值的问题,所以采用降序 return (o2+o1).compareTo(o1+o2); } }); StringBuffer buf=new StringBuffer(); for(String temp:s){ buf.append(temp); } int index=0; String string = buf.toString(); while(index<string.length()&&string.charAt(index)=='0'){ index++; } if(string.length()==0) return "0"; return buf.substring(index); } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- DES/3DES/AES 三种对称加密算法实现 2020-06-11
- 终于有人把最适合学习算法的书单找出来了,面试必备! 2020-06-03
- 基础排序算法(附加java实现) 2020-06-02
- 终于有人把最适合学习算法的书单找出来了,面试必备! 2020-05-29
- 最新美团面试技术四面拿offer:Spring、JVM、多线程、算法、 2020-05-21
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash