Largest Number组合最大数算法详解
来源:互联网 发布:域名服务器地址是什么 编辑:程序博客网 时间:2024/06/15 19:19
问题详见: Largest Number
题目是给出一个非负整数数组,将他们组合成最大的整数。题目描述如下:
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.
解题思路:
由于题目中所给数组均为非负整数,所以可以直接将其转换为字符串并将其依照相邻两个字符串拼接按照逆字典序进行排序拼接并直到所有相邻的字符串都满足拼接的最大要求,那么这个字符串形成的数组整个拼接起来就是所求的最大整数(字符串形式)。然而还要考虑一个特例就是有若干个0的数组组成的最大数为0,而不是00或者00…00。整个算法复杂度主要集中在排序那里,复杂度为
class Solution {public: string largestNumber(vector<int>& nums) { vector<string> arr; for(auto i:nums) arr.push_back(to_string(i)); //将非负整数数组转换成字符串压进字符串数组 sort(begin(arr), end(arr), [](string &s1, string &s2){return s1+s2>s2+s1; }); //将字符串数组排序使得能组成最大数 string ans; for(auto s:arr) //将最大数组合出来 ans+=s; while(ans[0]=='0' && ans.length()>1) //防止出现“00”这样的结果 ans.erase(0,1); return ans; }};
其提交运行结果如下:
0 0
- Largest Number组合最大数算法详解
- *[Lintcode]Largest Number 最大数
- [lintcode]最大数 Largest Number
- leetcode_[python/C++] 179. Largest Number(数字组合成最大数)
- Largest Number 拼凑成最大的数
- LeetCode 179. Largest Number(最大数)
- leetcode179-Largest Number(把数组排成最大的数)
- 184.Largest Number-最大数(中等题)
- Largest Number(最大数字)
- 两个序列组合成最大的数Create Maximum Number
- 查找数组中最大的两个数(Find two Largest Number)
- 卡特兰数(Catalan Number) 算法、数论 组合~
- Leetcode 179 Largest Number 构造最大数字
- LeetCode--Largest Number(最大数字)Python
- FCC算法:六、找出多个数组中的最大数--Return Largest Numbers in Arrays
- 最大不能组合的数
- 数串输出组合最大
- 组合数学——排列数生成算法详解(zz)
- poj 1860 Currency Exchange (spfa或Bellman-Ford)
- 分类算法评价
- shell中>/dev/null 2>&1是什么鬼?
- part-25 运放的热阻
- 在KaliLinux安装flashplayer
- Largest Number组合最大数算法详解
- 最新版 nginx内置变量 大全
- cs231n作业1--two_layer_net
- Spring 面向切面编程
- Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化
- React Native Image 总结
- 编程,文与理的碰撞!
- C#调用EasyPusher
- Xcode编译常见错误解决:linker command failed with exit code 1 (use -v to see invocation)