Largest Number

原题链接Largest Number

给定一个数值数组,将数组中的数值按照一定顺序拼接在一起,使得拼接的结果值最大

思路:

  • 将原数值数组转为字符串数组,方便拼接和比较
  • 将字符串数组排序
  • 从头到尾拼接结果

难点在如何对字符串数组排序,为了使结果最大,可以得知需要将数字打的排到前面,以图片为例,

  • 9的数字最大,所以排在第一位
  • 随后是5,排在第二位
  • 对于3,30,34而言,通过比较可以看到34330这样可以得到最大值

对于第三步,如何比较高位相等的一些数字呢(如3,30,34),如果以30和34为例,排序的结果无非是

  • 30在34的前面
  • 34在30的前面

这两种,所以就把这两种结果比较即可,即判断3034和3430的大小关系从而确定30和34的先后位置

代码如下

class Solution {
public:string largestNumber(vector<int>& nums) {vector<string> strs(nums.size());auto it = nums.begin();/* 生成字符串数组 */std::generate(strs.begin(), strs.end(), [&it]{return std::to_string(*(it++));});/* 排序 */std::sort(strs.begin(), strs.end(), [](auto& lhs, auto& rhs){return lhs + rhs > rhs + lhs;});/* 拼接 */auto result = std::accumulate(strs.begin(), strs.end(), string(""), [](auto& res, auto& str) {return res + str;});/* 去除前缀0 */return (result.empty() || result.front() == '0') ? "0" : result;}
};

每天一道LeetCode-----将数值数组按一定顺序拼接,使得拼接的结果最大相关推荐

  1. 去掉数组最后一个元素_leetcode 34. 在排序数组中查找元素的第一个和最后一个位置每天刷一道leetcode算法系列!...

    作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...

  2. c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

  3. 每日一道 LeetCode (42):旋转数组

    每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...

  4. 一天一道LeetCode(61-90)

    一天一道LeetCode(61-90) 文章目录 一天一道LeetCode(61-90) 61.旋转链表 62.不同路径 63.不同路径 II 64.最小路径和 65.有效数字(未解决) 66.加一 ...

  5. leetcode17. 电话号码的字母组合--每天刷一道leetcode算法系列!

    作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人 前文回顾: leetcode1. 两数之和--每天刷一道leetcode系列! leetcode2. 两数相加--每天刷一道leetcod ...

  6. leetcode最小面积_每日一道 LeetCode (51):盛最多水的容器

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

  7. atoi函数_每日一道 LeetCode (50):字符串转换整数 (atoi)

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

  8. 【python】一道LeetCode搞懂递归算法!#131分割回文串 #以及刷LeetCode的一点点小心得 [数据结构与算法基础]

    题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串.返回 s 所有可能的分割方案. # 示例 输入: "aab" 输出: [["aa",&q ...

  9. 每日一道leetcode(python)695. 岛屿的最大面积

    每日一道leetcode(python)695. 岛屿的最大面积 2021-08-21 给定一个包含了一些 0 和 1 的非空二维数组 grid .一个 岛屿 是由一些相邻的 1 (代表土地) 构成的 ...

最新文章

  1. 读书笔记----javascript函数编程
  2. 小程序服务器角色,小程序在我们的生活中扮演什么角色?
  3. esd管 低cj要求_TVS管与ESD保护二极管的区别,联系以及应用
  4. 【java作业】2、 编写两个函数,分别使用字节流、字符流实现文件的拷贝;点击按钮,将第三个文本框的字符串的值设置为第一个文本框的字符串+第二个文本框的字符串。
  5. CSS魔法堂:你一定误解过的Normal flow
  6. 16.04编译android 7.0,ubuntu16.04 编译Android5.1报错
  7. [js] 解释下深度优先遍历和广度优先遍历的区别及如何实现
  8. Python 数据结构与算法——归并排序
  9. 如何从云桌面(远程桌面)拷贝文件
  10. 最大公约数和最小公倍数的关系
  11. Python地学分析 — 通过GPS数据分析鸟类行踪 07
  12. android p适配三星s86,感受三星S8屏幕震撼 先过APP适配这道坎
  13. 上传图片校验图片类型、大小及尺寸
  14. Unity 数学基础
  15. Node如何去除短视频水印?
  16. node ncc 打包
  17. 苹果cms简洁精美影视模板整站源码
  18. ssm毕设项目大学生比赛信息管理系统38iiq(java+VUE+Mybatis+Maven+Mysql+sprnig)
  19. python 三元表达式_Python三元表达式
  20. IHS分析师:折叠屏幕手机2017年前难上市

热门文章

  1. 简单的jQuery扩展函数-让函数缓冲执行
  2. uniapp 默认的 ‘再按一次退出应用’ 提示语修改方法
  3. 关于服务器的入门知识整理
  4. Mac的文件比对工具:Meld、Beyond Compare
  5. vue-router 按需加载
  6. mysql查询缓慢原因和解决方案
  7. python-study-12
  8. springboot 不同环境不同的配置
  9. 查找xml文件中某接点的值
  10. PHP学习记录第一篇:Ubuntu14.04下LAMP环境的搭建