Lintcode算法
题目:
给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。
样例
给出 [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);
}
}
Lintcode算法的更多相关文章
- lintcode算法周竞赛
------------------------------------------------------------第七周:Follow up question 1,寻找峰值 寻找峰值 描述 笔记 ...
- 拿到蚂蚁金服的offer是一种什么体验?3年Java程序员分享面经
前言:我是一名三年的Java程序员,之前一直是在外包公司工作的.在这个月五号的时候,通过我的学长做内推,有了去蚂蚁金服面试的机会.我是在12号接到的电话面试的,因为蚂蚁金服需要7天的简历评估的.还有就 ...
- (lintcode全部题目解答之)九章算法之算法班题目全解(附容易犯的错误)
--------------------------------------------------------------- 本文使用方法:所有题目,只需要把标题输入lintcode就能找到.主要是 ...
- lintcode最长回文子串(Manacher算法)
题目来自lintcode, 链接:http://www.lintcode.com/zh-cn/problem/longest-palindromic-substring/ 最长回文子串 给出一个字符串 ...
- 数据结构与算法/leetcode/lintcode题解
http://algorithm.yuanbin.me/zh-hans/index.html
- [数据结构]——二叉树(Binary Tree)、二叉搜索树(Binary Search Tree)及其衍生算法
二叉树(Binary Tree)是最简单的树形数据结构,然而却十分精妙.其衍生出各种算法,以致于占据了数据结构的半壁江山.STL中大名顶顶的关联容器--集合(set).映射(map)便是使用二叉树实现 ...
- Lintcode 166. 主元素
----------------------------------- Moore's voting algorithm算法:从一个集合中找出出现次数半数以上的元素,每次从集合中去掉一对不同的数,当剩 ...
- Lintcode 82.落单的数
-------------------------------- 这道题好坑啊,自己说是2*n+1个数字,结果有组测试数据竟然传了个空数组进来... 经典位算法: n^n==0 n^0==n AC代码 ...
- 【刷题笔记】--lintcode木头加工(java)
木头加工 题目描述 有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为 k.当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度. 注意事项 木头 ...
随机推荐
- C#利用事件与委托进行窗体间传值简单小例子
本篇博客是利用C#委托与事件进行窗体间传值的简单小例子 委托与事件的详细解释大家可以参照张子阳的博客: http://www.tracefact.net/CSharp-Programming/Dele ...
- jQuery之设置元素内容(移动和复制元素,使用append(),appendTo()方法)
jQuery之设置元素内容(移动和复制元素,使用append(),appendTo()方法) ---------- 如果想把内容添加到现有内容末尾,可以利用append()命令.append()命令语 ...
- CSS实现文本周围插入符号
CSS实现文本周围插入符号的方案 本文要讨论的是如何在文本的周围插入图标,怎么样控制它们之间的位置关系,通过HTML结构合理性与CSS属性的使用来比较不同方案所实现效果的优缺点. 常见设计稿要求 在文 ...
- Java使用POI操作Excel文件
1.简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式文件读和写的功能. 2.依赖的jar包 <!-- ex ...
- hibernate 性能优化之 1+N 问题
1. 注意 session.clear()的运用,尤其在不断分页查询的时候 a) 在一个大集合中进行遍历,遍历 msg,去除其中的含有敏感字样的对象 b) 另外一种形式的内存泄漏 面试题:Java 有 ...
- 每天一个linux命令-uname,输出操作系统信息(内核版本、硬件架构32位/64位等)
uname命令:主要用于输出一组操作系统的信息. 这个命令比较简单也比较有意思.为什么这么说呢?输入--help后看看效果,一目了然,简单吧: 首先输出完整信息: 我们再依次来输出一下: 最后,我 ...
- hadoop使用
hadoop@ubuntu:~$ cd hadoop-2.0.5-alpha/ hadoop@ubuntu:~/hadoop-2.0.5-alpha$ ls hadoop@ubuntu:~/hadoo ...
- (四)svn 服务器端的使用之创建工程目录
仓库中存放开发项目代码.文档等,需要创建一个工程目录. 在之前创建的仓库中右键点击: 创建成功 trunk:项目开发代码的主体,是从项目开始直到当前都处于活动的状态,从这里可以获得项目最新的源代码以及 ...
- JavaScript专题
1. 在ajax的任何回调方法中,比如success回调,使用return,将会无效 2. //todo
- RAC共享磁盘挂载工具
待更新: oracleasm: udev: 自己搭建个存储服务器: