热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【剑指offer】登峰造极把数组排成最小的数

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,

题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

思路
将数组中的数字连接起来,排成一个最小的数字。将’大数’往后放’小数’往前放,如何定义’大数’和’小数’?比如说有两个数a和b,如果ab>ba则a是’大数’b是’小数’,要排成ba。
于是,这道题目变成了一个排序问题,将能把组合出来的数字变大的数字往后排。我们这里需要自己定义一个比大小的比较方法。用冒泡排序,可以解决此题。

class Solution {
public:string PrintMinNumber(vector<int> nums) {auto compare &#61; [](string sa, string sb){return sa&#43;sb < sb&#43;sa;};vector<string> tmp;for(int n : nums){tmp.push_back(to_string(n));}sort(tmp.begin(), tmp.end(), compare);string ans &#61; "";for(string s : tmp) ans &#43;&#61; s;return ans;}
};


推荐阅读
author-avatar
陈家碧玉3
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有