题目

这个题目是我在写 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容器的实现。

算法学习 - 拼接成最大的数字相关推荐

  1. C++算法学习(力扣:201. 数字范围按位与)

    给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点). 示例 1: 输入: [5,7] 输出: 4 ...

  2. 【算法java版01】:键盘录入一个字符串,将字符串中的大写改成小写,小写改成大写,数字改成*

    键盘录入一个字符串,将字符串中的大写改成小写,小写改成大写,数字改成 * 一.题目描述 二.解题思路 三.代码示例 四.测评结果 一.题目描述 键盘录入一个字符串,将字符串中的大写改成小写,小写改成大 ...

  3. 区块链 01(简化后的区块包括父区块哈希值、数据、时间戳、哈希值这四个字段,区块的哈希值由父区块哈希值、数据、时间戳、3个字段拼接通过 哈希算法计算而成)

    """区块包括区块头和区块体两个部分.区块头由版本.父区块哈希值.数据.Merkle根.时间戳.目标难度. #Nonce值组成:区块体实际上可以包含任何内容,在比特币中包 ...

  4. 算法题:给出一组数字,拼接一个最大的值

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/70304265冷血之心的博客) 算法题:给出一组数字,拼接一个最大的 ...

  5. 数字三角形路径最小值c语言题目,算法学习——动态规划之点数值三角形的最小路径...

    算法描述在一个n行的点数值三角形中,寻找从顶点开始每一步可沿着左斜或者右斜向下直到到达底端,使得每个点上的数值之和为最小 右图为一个4行的点数值三角形 算法思路接收用户输入行数n 使用一个二维数组a[ ...

  6. python学习精华——成长篇

    python学习精华--成长篇 简单说一下为什么学习python,第一个原因寒假实在无聊( ̄- ̄).其次就是官话,大家都知道浙江吧python纳入中学学习教程,这足以见这门语言在将来可以说是一个风口. ...

  7. LeetCode数据结构与算法学习Day03

    LeetCode数据结构与算法学习Day03 图解数据结构与算法 59 I 滑动窗口最大值 题目描述: 解题思路: 59 II 队列的最大值 题目描述: 解题思路: 67 把字符串转换成整数 题目描述 ...

  8. 算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记

    算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记 前言 哈希表 哈希操作 冲突处理 开放定址法 再哈希法 公共溢出区 链式地址法 扩容哈希表 设计简易哈希表 总结 布隆过滤器 对比 ...

  9. 算法学习 (门徒计划)4-3 专项面试题解析 学习笔记

    算法学习 (门徒计划)4-3 专项面试题解析 学习笔记 前言 LeetCode 1367. 二叉树中的列表 解题思路 示例代码 LeetCode 958. 二叉树的完全性检验 解题思路 示例代码 Le ...

最新文章

  1. 职责链模式(chain of responsibility)
  2. [Google Guava] 8-区间
  3. 世界hack杂志集合(转)
  4. 不定字段数目的数据库表设计和数据结构
  5. ajax div 赋值重新渲染_30分钟全面解析图解AJAX原理
  6. WPF- 关于自定义Calendar控件
  7. AcWing 201. 可见的点
  8. CodeForces 139C Literature Lesson(模拟)
  9. linux-使用基础-自动补全-快捷键-历史命令-别名
  10. 【iCore3 双核心板_ uC/OS-III】例程二:任务的建立与删除
  11. 繁星屠龙软件下载_繁星抢币有什么要求 - 天津政务网
  12. 2022.5.23-5.29 AI行业周刊(第99期):AI创业道路
  13. 转载:wps怎么制作半圆形时间轴? wps彩色时间轴的制作方法
  14. SpringMVC是什么?
  15. 办公人员必须会的15种求和技巧
  16. HTML 编码规范之布尔型属性
  17. python气象实时监控系统_Python绘图 | 国家气象局开源预报检验库(多图预警)
  18. 极路由4增强版编译aria2-1.34
  19. Dart factory 快速理解
  20. TensorFlow ImportError: initialization failed

热门文章

  1. atitit 音频 项目 系列功能表 音乐 v3 t67.docx Atitit 音频 项目 系列功能表 1.音频 音乐 语言领域的功能表 听歌识曲功能 酷我功能。 铃声 功能。。 音频切割(按
  2. 狂妄之人怎么用计算机弹,天谕手游狂妄之人乐谱代码分享
  3. 【洛谷P2967】【USACO 2009 Dec】电子游戏 Video Game Troubles
  4. 域名被微信/QQ红了(被封锁、被屏蔽、被和谐)后最好的解决方法
  5. u盘win7纯净版_U盘PE启动安装Win7系统教程(微PE版)
  6. 去除加粗的css,CSS去掉b加粗和strong加粗标签样式
  7. PaddleFL 1.2.0版本 使用docker镜像编译流程(Ubuntu 20.04)
  8. 总结一些IT项目经理的管理方法与经验
  9. 经历过CMMI后的体会和总结,为什么别人的时间总是比你的值钱
  10. [转]移动IIS7.5默认inetpub目录_se7en3_新浪博客