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.

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

Hide Tags

Sort

 

 
    这题主要的需要考虑排序中的对比判断,对于给定的两个数lft,rgt,误区是直接 lft rgt 判断,根据题目的思路,介意将rgt 接到 lft后面, 与lft 接到 rgt 后面来对比,这样会简单很多,不过这样需要考虑到是否会溢出的问题,题目的验证好像没有对这一问题的严格控制,可以将相接的数值使用 unsigned long int 来存储,这样避免一定情况的溢出。
 
#include <vector>
#include <iostream>
#include <algorithm>
#include <sstream>
using namespace std; class Solution {
public:
string largestNumber(vector<int> &num) {
struct MyCompared
{
bool operator ()(int lft,int rgt)
{
long unsigned int lidx=,ridx=;
while(lidx!=)
if(lft>=*lidx) lidx*=;
else break;
while(ridx!=)
if(rgt>=*ridx) ridx*=;
else break;
lidx*=;
ridx*=;
return lft*ridx+rgt > rgt*lidx+lft;
}
}myCompared;
if(num.size()==) return "";
sort(num.begin(),num.end(),myCompared);
ostringstream os;
if(num[]==) return "";
for(int i =;i<num.size();i++)
os<<num[i];
return os.str();
}
}; int main()
{
vector<int > num{,};
Solution sol;
cout<<sol.largestNumber(num)<<endl;
return ;
}

最新文章

  1. installshield使用教程
  2. 用读写锁三句代码解决多线程并发写入文件 z
  3. 使用MySQL正则表达式查询
  4. exosip
  5. C++之运算符重载(2)
  6. DDNS 的工作原理及其在 Linux 上的实现--转
  7. php join函数使用,很是方便
  8. HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)
  9. denyhost
  10. 关于lvs+keepalived只加入一台realserver问题
  11. 关于request和response的中文乱码问题
  12. JS构造函数模式
  13. Serverless无服务应用架构纵横谈
  14. CSS单行、多行文本溢出显示省略号
  15. PHP上传文件大小限制的问题(转)
  16. 使用SIGALRM信号为阻塞操作设置超时
  17. .net开发环境搭建
  18. 关于FSMC地址线的理解
  19. 3PC
  20. Arcgis for Js实现graphiclayer的空间查询(续)

热门文章

  1. Vue-Router基础学习笔记
  2. IIC如何释放数据总线? 为什么=1就是释放?
  3. 【转载】2015年8月编程语言排行榜:Java遥遥领先
  4. (ADO.NET)关于C#中“配置”sqlite问题
  5. 海量数据处理算法—BitMap
  6. as API一些容易忘记的属性和方法
  7. WebApp开发技巧
  8. Oracle 分析函数--Row_Number()
  9. linux环境搭建系列之Apache MQ安装
  10. Java 语言概述与开发环境(1)