Largest Number
2015-07-29 21:59
190 查看
Given a list of non negative integers, arrange them such that they form the largest number.
For example, given
Note: The result may be very large, so you need to return a string instead of an integer.
题目解析:
这个题目跟剑指offer33题很像,一个求最小,一个求最大,注意,这里隐含了一个大数的问题,需要转化为字符串来处理,还有要防止[0,0]最后输出为[0],而不是[00]!!!一开始提交这个用例没能通过
解法思路:类似冒泡排序 假设【m,n】,若mn<nm则交换数字位置,最后把重新排好顺序的字符串给输出出来,下面上AC代码
版权声明:本文为博主原创文章,未经博主允许不得转载。
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.
题目解析:
这个题目跟剑指offer33题很像,一个求最小,一个求最大,注意,这里隐含了一个大数的问题,需要转化为字符串来处理,还有要防止[0,0]最后输出为[0],而不是[00]!!!一开始提交这个用例没能通过
解法思路:类似冒泡排序 假设【m,n】,若mn<nm则交换数字位置,最后把重新排好顺序的字符串给输出出来,下面上AC代码
public String largestNumber(int[] nums) { // 判断数组元素是否全部为0 int count = 0; for (int i : nums) { if (i == 0) count++; } if (count==nums.length) return "0"; int temp = 0; StringBuilder result = new StringBuilder(""); for (int i = 0; i < nums.length; i++) { for (int j = 0; j < nums.length - i - 1; j++) { // 假设顺序为m n,若mn<nm则交换顺序 if (compare(nums[j], nums[j + 1])) { temp = nums[j]; nums[j] = nums[j + 1]; nums[j + 1] = temp; } } } for (int i : nums) { result.append(String.valueOf(i)); } return result.toString(); } private boolean compare(int i, int j) { String t1 = String.valueOf(i) + String.valueOf(j); String t2 = String.valueOf(j) + String.valueOf(i); if (t1.compareTo(t2) <= 0) return true; else return false; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- Unsupported major.minor version 52.0
- 模板专业化和模板偏特样片(template specialization and partial template specialization)
- 字符串的全排列和组合算法
- C语言中,各类型数据所占字节数及与它取值范围的关系
- java中关于链表操作
- 有关于Tachyon的特性
- 状态压缩
- OpenCV 2.4+ C++ 平滑处理
- 2015多校联合训练第一场Tricks Device(hdu5294)
- 备注ocp_ORACLE专题网络
- 一张电影票价引发的“地震”
- 求最大子段和的几种方法以及性能测试
- apache和php在网络中的位置
- 写一个兼容性比较好的拖拽DEMO
- 求最大子段和的几种方法以及性能测试
- Python: [Errno 32] Broken pipe异常分析
- QT实现多窗口切换
- C/C++ 类和结构体的差别
- 设计模式之简单工厂
- 洗牌算法