Largest Number
来源:互联网 发布:debian centos arm 编辑:程序博客网 时间:2024/04/28 13:02
这道题的关键在于找到一个巧妙的比较函数。
在论坛里看到某位大神的经典之作,代码如下:
class Solution {public: string largestNumber(vector<int> &num) { vector<string> arr; for(auto i:num) arr.push_back(to_string(i)); sort(begin(arr), end(arr), [](string &s1, string &s2){ return s1+s2>s2+s1; }); string res; for(auto s:arr) res+=s; while(res[0]=='0' && res.length()>1) res.erase(0,1); return res; }};上述代码用了许多c++11的新特性,可以查阅相关资料了解。
巧妙的地方在于两点:
1.认识到这里直接用数字比较是不合适的,而用字符串形式比较正好符合要求。我之前就是傻傻的将两个数字究竟有几位整理出来,然后再从高位向低位比较,多了不必要的麻烦。
2.通过s1+s2>s2+s1这样巧妙的比较方式进行比较,注意到每次考虑第n个数字时,之前考虑的n-1个数字已经摆放到位,因此只需要局部最大即可得到全局最大。
0 0
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- Largest Number
- 每天一个python小程序 2使用python.MySQLdb执行数据库操作
- 【Plan 第七场】
- HBase source code. StoreFile
- zqdnr's ideas
- sicp学习笔记
- Largest Number
- JAVA 覆写 与 重载
- shell编程,消除c/c++无用变量告警的小脚本
- hdu1143 状态压缩dp 记忆化搜索写法
- 一句话去除UITableView底部多余行及分割线
- 条款35、考虑虚函数以外的选择
- Android Studio虚拟机配置虚拟键盘
- c++中的string常用函数用法
- AndroidStudio Gradle Project Sync failed错误解决