算法学习 - 拼接成最大的数字
题目
这个题目是我在写 LeetCode Largest Number 的时候看到的题目.
题目意思是给你一组数字,例如:
[3, 30, 34, 5, 9]
那么所能拼成的最大数字应该是:
9534330
解题思路
其实这个题目我们很容易发现,就是把数字按照我们想要的大小排序就好了。
先看如何比较,通常我们的想法应该是直接比较,或者按照位比较。可是那样情况就太多了,例如:a=3; b=4
很容易得出a < b
假如 a = 5; b = 34
反而是a > b
,因为534 > 345
。还有其他情况。这样分开讨论太麻烦了,我们可以很简单的来比较:
直接比较两个数的两次拼接结果,例如: a = 45; b = 56;
直接比较4556 < 5645
这样就一次比较成功了。不过这里要注意的是我们要先转换成字符串然后再比较,因为两个数字拼接可能会超出整数范围。
代码实现
下面贴上代码实现。
class Solution {
public:string largestNumber(vector<int> &num) {string s = "";sort(num.begin(), num.end(), max);//STL的排序算法if(num[0] == 0){return "0";}for(int i = 0; i < num.size(); i++){s.append(to_string(num[i]));}return s;}static bool max(int a, int b){//必须声明为staticstring s1 = to_string(a) + to_string(b);string s2 = to_string(b) + to_string(a);return (s1.compare(s2) > 0);}};
这里的返回值就是最大的拼接后的数字了,用字符串表示,防止超出整数范围无法表示。
不懂代码里sort()
那个函数的使用的,请看我另一片博客:STL的排序函数sort使用
这里的传入值是一个vector
容器,大家暂时把它看做一个数组,后面我会讲vector
容器的实现。
算法学习 - 拼接成最大的数字相关推荐
- C++算法学习(力扣:201. 数字范围按位与)
给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点). 示例 1: 输入: [5,7] 输出: 4 ...
- 【算法java版01】:键盘录入一个字符串,将字符串中的大写改成小写,小写改成大写,数字改成*
键盘录入一个字符串,将字符串中的大写改成小写,小写改成大写,数字改成 * 一.题目描述 二.解题思路 三.代码示例 四.测评结果 一.题目描述 键盘录入一个字符串,将字符串中的大写改成小写,小写改成大 ...
- 区块链 01(简化后的区块包括父区块哈希值、数据、时间戳、哈希值这四个字段,区块的哈希值由父区块哈希值、数据、时间戳、3个字段拼接通过 哈希算法计算而成)
"""区块包括区块头和区块体两个部分.区块头由版本.父区块哈希值.数据.Merkle根.时间戳.目标难度. #Nonce值组成:区块体实际上可以包含任何内容,在比特币中包 ...
- 算法题:给出一组数字,拼接一个最大的值
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/70304265冷血之心的博客) 算法题:给出一组数字,拼接一个最大的 ...
- 数字三角形路径最小值c语言题目,算法学习——动态规划之点数值三角形的最小路径...
算法描述在一个n行的点数值三角形中,寻找从顶点开始每一步可沿着左斜或者右斜向下直到到达底端,使得每个点上的数值之和为最小 右图为一个4行的点数值三角形 算法思路接收用户输入行数n 使用一个二维数组a[ ...
- python学习精华——成长篇
python学习精华--成长篇 简单说一下为什么学习python,第一个原因寒假实在无聊( ̄- ̄).其次就是官话,大家都知道浙江吧python纳入中学学习教程,这足以见这门语言在将来可以说是一个风口. ...
- LeetCode数据结构与算法学习Day03
LeetCode数据结构与算法学习Day03 图解数据结构与算法 59 I 滑动窗口最大值 题目描述: 解题思路: 59 II 队列的最大值 题目描述: 解题思路: 67 把字符串转换成整数 题目描述 ...
- 算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记
算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记 前言 哈希表 哈希操作 冲突处理 开放定址法 再哈希法 公共溢出区 链式地址法 扩容哈希表 设计简易哈希表 总结 布隆过滤器 对比 ...
- 算法学习 (门徒计划)4-3 专项面试题解析 学习笔记
算法学习 (门徒计划)4-3 专项面试题解析 学习笔记 前言 LeetCode 1367. 二叉树中的列表 解题思路 示例代码 LeetCode 958. 二叉树的完全性检验 解题思路 示例代码 Le ...
最新文章
- 职责链模式(chain of responsibility)
- [Google Guava] 8-区间
- 世界hack杂志集合(转)
- 不定字段数目的数据库表设计和数据结构
- ajax div 赋值重新渲染_30分钟全面解析图解AJAX原理
- WPF- 关于自定义Calendar控件
- AcWing 201. 可见的点
- CodeForces 139C Literature Lesson(模拟)
- linux-使用基础-自动补全-快捷键-历史命令-别名
- 【iCore3 双核心板_ uC/OS-III】例程二:任务的建立与删除
- 繁星屠龙软件下载_繁星抢币有什么要求 - 天津政务网
- 2022.5.23-5.29 AI行业周刊(第99期):AI创业道路
- 转载:wps怎么制作半圆形时间轴? wps彩色时间轴的制作方法
- SpringMVC是什么?
- 办公人员必须会的15种求和技巧
- HTML 编码规范之布尔型属性
- python气象实时监控系统_Python绘图 | 国家气象局开源预报检验库(多图预警)
- 极路由4增强版编译aria2-1.34
- Dart factory 快速理解
- TensorFlow ImportError: initialization failed
热门文章
- atitit 音频 项目 系列功能表 音乐 v3 t67.docx Atitit 音频 项目 系列功能表 1.音频 音乐 语言领域的功能表 听歌识曲功能 酷我功能。 铃声 功能。。 音频切割(按
- 狂妄之人怎么用计算机弹,天谕手游狂妄之人乐谱代码分享
- 【洛谷P2967】【USACO 2009 Dec】电子游戏 Video Game Troubles
- 域名被微信/QQ红了(被封锁、被屏蔽、被和谐)后最好的解决方法
- u盘win7纯净版_U盘PE启动安装Win7系统教程(微PE版)
- 去除加粗的css,CSS去掉b加粗和strong加粗标签样式
- PaddleFL 1.2.0版本 使用docker镜像编译流程(Ubuntu 20.04)
- 总结一些IT项目经理的管理方法与经验
- 经历过CMMI后的体会和总结,为什么别人的时间总是比你的值钱
- [转]移动IIS7.5默认inetpub目录_se7en3_新浪博客