剑指offer第三十二题【把数组排成最小的数】c++实现

来源:互联网 发布:西安中软博通软件 编辑:程序博客网 时间:2024/06/17 10:01
把数组排成最小的数
  • 参与人数:1233时间限制:1秒空间限制:32768K
  • 通过比例:20.53%
  • 最佳记录:0 ms|8552K(来自  啊哈哈)
  •  算法知识视频讲解

题目描述

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

这道题其实就是一道排序题,主要就是排序规则。

要的是连接后的字典序最小

那就是  s1+s2和s2+s1当做排序依据

string toString(int number){    char s[15] ;    sprintf(s,"%d",number);    string res(s);    return res;}bool cmp(int a,int b){    string sa=toString(a)+toString(b);    string sb=toString(b)+toString(a);    return sa<sb;}string PrintMinNumber(vector<int> numbers) {    sort(numbers.begin(),numbers.end(),cmp);    string res="";    for(int i=0;i<numbers.size();i++){        res+=toString(numbers[i]);    }    return res;}


0 0
原创粉丝点击