[LeetCode] 179. Largest Number 解题思路
2015-12-29 21:11
69 查看
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.
问题:给定一个数组,求将数组元素拼凑成一个值最大的整数。
将整型数组的转化为字符串数组,用 std::sort 对字符串数组排序,使得排序后元素直接连接成为最大值整数。
使用默认的比较函数排序,会得到不一定是最大值,例如 {360, 36} 排序后得到的是 36036 ,明显不是小于 36360。解决这个问题,就是重写比较函数,使得排序后的两个元素连接成为较大的整数即可,很简洁。
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.
问题:给定一个数组,求将数组元素拼凑成一个值最大的整数。
将整型数组的转化为字符串数组,用 std::sort 对字符串数组排序,使得排序后元素直接连接成为最大值整数。
使用默认的比较函数排序,会得到不一定是最大值,例如 {360, 36} 排序后得到的是 36036 ,明显不是小于 36360。解决这个问题,就是重写比较函数,使得排序后的两个元素连接成为较大的整数即可,很简洁。
int static comp(string s1, string s2){ return (s1 + s2) > (s2 + s1); } string largestNumber(vector<int>& nums) { vector<string> numsStr; for (int i = 0 ; i < nums.size(); i++) { numsStr.push_back(to_string(nums[i])); } std::sort(numsStr.begin(), numsStr.end(), comp); string res = ""; for (int i = 0 ; i < numsStr.size(); i++) { res += numsStr[i]; } int i = 0; while (i < res.size()-1 && res[i] == '0') { i++; } res = res.substr(i); return res; }
相关文章推荐
- Java中JDBC连接数据库Oracle
- tinyos学习笔记9--TestRPL(UDP)例程分析
- CCNP学习笔记16-MSTP,span
- 技术杂记-日期时间字符串解析识别
- java 序列化相关
- CentOs之yum详解及程序的编译安装
- shell编程实战
- IOS开发系列----Objective-c的内存管理
- 20151229 053 30-60
- HDU计算机学院大学生程序设计竞赛(2015’12)The Country List
- Deep Introduction to Go Interfaces.
- 【iCore3 双核心板】例程二十三:LAN_HTTP实验——网页服务器
- Android广播的静态与动态注册
- 非递归DFS
- win7下安装配置zookeeper
- oracle11g dataguard failover重建后归档日志没有被应用被NO的问题
- 系统崩溃,大圣归来
- python函数与方法装饰器
- jQuery使用$.ajaxFileUpload上传
- 使用VAssistX的好处