179. 最大数 (Medium)
2024-10-12 09:48:02
问题描述
给定一组非负整数 nums
,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例 1:
输入:nums = [10,2]
输出:"210"
示例 2:
输入:nums = [3,30,34,5,9]
输出:"9534330"
提示:
1 <= nums.length <= 100
0 <= nums[i] <= 10⁹
解题思路
贪心,将数组转化为字符串数组,然后如果s1 + s2 >= s2 + s1
,那么就保证s1
一定在s2
的前面,利用该规则自定义排序,同时要注意对数组中元素全为0的特殊条件的判断。
代码
class Solution {
public:
string largestNumber(vector<int> &nums) {
int sum = 0;
for (int i = 0; i < nums.size(); i++) {
if (nums[i] != 0) {
sum += nums[i];
break;
}
}
// 对数组元素全为0的特殊情况的判断
if (sum == 0) {
return "0";
}
vector<string> tmp;
for (int &num : nums) {
tmp.push_back(std::to_string(num));
}
// 自定义排序,确保如果s1 + s2 > s2 + s1,那么s1一定在s2前面
auto cmp = [&](string &s1, string &s2) {
return s2 + s1 <= s1 + s2;
};
std::sort(tmp.begin(), tmp.end(), cmp);
string res;
for (auto &s : tmp) {
res += s;
}
return res;
}
};
最新文章
- UITableView heightForHeaderInSection遇到的坑
- (原创)MongoDB之NoSQL简介
- MFC 使用位图按钮,并且设置按钮的鼠标悬停效果
- 记一次在Linux上面启动部署在tomcat服务器的程序
- JQuery 表单校验插件 validate 使用纪录
- Docker run命令详解 转
- 一、HTML和CSS基础--网页布局--实践--导航条菜单的制作
- G面经prepare: Reorder String to make duplicates not consecutive
- 《zw版&#183;Halcon-delphi系列原创教程》 3d汽车模型自动区域分割
- JSAPI_Ticket签名
- 分布式锁1 Java常用技术方案(转)
- 迷你MVVM框架 avalonjs 0.82发布
- 浅谈MAIC 2016第二届移动应用(APP)创新大会
- 虚拟机网络配置详解(NAT、桥接、Hostonly)
- qmake 提示 Failure to open file:****
- Java入门篇(五)——Java的字符串/String类
- C++语言之构造函数
- jsp+servlet include引入文件指令
- 框架中的导航框架 &; position定位
- Java多线程系列——计数器 CountDownLatch
热门文章
- [python] 基于NetworkX实现网络图的绘制
- 用 Python 脚本实现电脑唤醒后自动拍照 截屏并发邮件通知
- ES6 中 Promise对象使用学习
- 手撕AVL树(C++)
- win32com操作word API精讲 第六集 Range(四)对齐和缩进
- 手把手教大家写书写一个Mqtt网关
- 9月23日内容总结——pycharm的安装与使用、python语法规范与注释、变量和常量、索引取值以及部分数据类型简介
- Python中的函数定义中的斜杠/和星号*
- Django-request、django连接数据库、ORM
- 1 .NET Core笔试题