题目描述

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

解题思路:主要是利用sort函数进行排序,中间利用了sort函数中的第三个参数进行自定义比较函数(很重要)。

sort函数

1.sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考虑!

2.sort函数的模板有三个参数:

void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

(1)第一个参数first:是要排序的数组的起始地址。

(2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址)

(3)第三个参数comp是排序的方法:可以是从升序也可是降序。如果第三个参数不写,则默认的排序方法是从小到大排序,也可以自定义排序函数。

参考代码:

#include <iostream>
#include <string.h>
#include <vector>
#include <stack>
#include <queue>
#include<algorithm>
#include <string>using namespace std;class Solution {
public://语法需求,需要加上static 函数功能:任意两个元素变成字符串相加,进行从小到大的排序static bool my_compare(int a, int b){string A = to_string(a);A += to_string(b);string B = to_string(b);B += to_string(a);return A < B;}string PrintMinNumber(vector<int> numbers) {string my_res;if (numbers.empty())return my_res;sort(numbers.begin(), numbers.end(),my_compare);for (int i = 0; i < numbers.size(); ++i) {my_res += to_string(numbers[i]);}return my_res;}
};int main()
{Solution solution;vector<int> my_numbers;my_numbers.push_back(3);my_numbers.push_back(32);my_numbers.push_back(321);solution.PrintMinNumber(my_numbers);return 0;
}

牛客网-C++剑指offer-第三十二题(把数组排成最小的数)相关推荐

  1. 牛客网(剑指offer) 第二十二题 从上往下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. <?php/*class TreeNode{var $val;var $left = NULL;var $right = NUL ...

  2. 牛客网(剑指offer) 第十二题 数值的整数次方

    //题目描述 //给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. <?phpfunction Power($base, $expo ...

  3. 牛客网(剑指offer) 第二十五题 复杂链表的复制

    //题目描述 //输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点 ...

  4. 牛客网(剑指offer) 第十九题 顺时针打印矩阵

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2, ...

  5. 牛客网(剑指offer) 第十八题 二叉树的镜像

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. <?php/*class TreeNode{var $val;var $left = NULL;var $right = NULL;fun ...

  6. 牛客网(剑指offer) 第十六题 合并两个排序的链表

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. <?php /*class ListNode{var $val;var $next = N ...

  7. 牛客网(剑指offer) 第十五题 反转链表

    //题目描述:输入一个链表,反转链表后,输出该链表的所有元素. <?php /*class ListNode{var $val;var $next = NULL;function __const ...

  8. 牛客网(剑指offer) 第十四题 链表中倒数第k个节点

    //题目描述:输入一个链表,输出链表该链表中倒数第k个节点. <?php /*class ListNode{var $val;var $next = NULL;function __constr ...

  9. 牛客网(剑指offer) 第二十题 包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. <?php $arr = array(); function mypush($node) {// write c ...

  10. 牛客网(剑指offer) 第十题 矩形覆盖

    //题目描述 //我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? <?phpfunction rectCover ...

最新文章

  1. 禅修笔记——硅谷最受欢迎的情商课
  2. VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT连接方式)
  3. Qt Creator使用3D材质
  4. 交换机工作原理_交换机的作用是什么?
  5. 第二阶段冲刺-个人总结04
  6. 拳王虚拟项目公社:闲鱼操作虚拟资源的案例拆解,教你玩转闲鱼虚拟资源,货源+方法
  7. win10文件夹加密_在Windows10中轻松创建隐形文件夹,为数据安全加把锁
  8. Java生成荣誉证书PDF文件
  9. 关于Android中的SlidingMenu中的用法
  10. is present but cannot be translated into a null value due to being declared as a primitive type
  11. 2021-03-06JAVA大数据Week1
  12. 筛选列_excel:有合并单元格的列不能筛选?没有什么不能,掌握方法就能
  13. 找出数组中出现次数最多的数字和出现次数
  14. AndroidTV获取U盘路径
  15. 音频播放AVAudioPlayer
  16. c语言 switch错误用法,C语言switch使用之诡异用法详解
  17. NGFW的Portal认证实验
  18. mysql有numeric类型吗_mysql数值类型 - numeric
  19. 这不就是微信朋友圈屏蔽功能吗?推特现在才做出来未免太迟了吧
  20. 玉米社:抖音作品几大核心指标,完播率、点赞率、吸粉率多少算好?

热门文章

  1. 【STM32F429】第8章 ThreadX GUIX移植到STM32F429(MDK AC6)
  2. 产品设计:axure的基本使用
  3. 【c++学习】int main(int argc, char** argv)命令行参数理解
  4. Matlab200以内所有质数,用matlab编写一个程序:求出200以内的质数,求!!!!急!!!!!...
  5. 公众号推送长图最佳尺寸_微信公众平台图片尺寸是多少
  6. pearson特征选择matlab,常用的特征选择方法之 Pearson 相关系数
  7. 《大学》与威斯敏斯特大教堂的无名墓碑
  8. 航天器平台二次电源系统的可靠性设计
  9. 化工自动化石油化工的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  10. 系统集成项目管理之项目合同管理