博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法小题之数组重排
阅读量:7095 次
发布时间:2019-06-28

本文共 1333 字,大约阅读时间需要 4 分钟。

题目描述

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

题目分析

先从题目出发,算一下给出的算例就可以发现规律,0-9当中越是小的数越应该放到最低位,数组中所有数最高位最小的应该放到前边作为高位,如果高位相同,比较下一位. 接下来从剩下的数当中依次执行这个规律,直观的想就是一个排序,但是这里面两数比较有点不太一样,关键是如何表达这种规律

可能你想到这很类似字符串的比较,有必要回顾下这个知识点:
s1与s2的大小取决于[1]:

1.如果 字符串1的第n位的ASCII码值 等于 字符串2的第n位的ASCII码值

则 继续比较下一位
2.如果 字符串1的第n位的ASCII码值 大于 字符串2的第n位的ASCII码值
则 输出结果:1,表示字符串1 > 字符串2;
3.如果 字符串1的第n位的ASCII码值 小于 字符串2的第n位的ASCII码值
则 输出结果:-1 表示字符串1 < 字符串2;
4.如果 每一位的ASCII码值都相等,而且长度相同,
则 输出结果:0 表示字符串1 == 字符串2;
5.如果 字符串1是字符串2的前m位,例如 abcd 与abcdef 比较,
则 字符串1<字符串2.

很明显第五条和我们想要的不太一样,实际上我们只需要比较的时候让字符串大小相同就可以,怎么办?拼起来:

如果$ab < ba$ , 那么$a <b$, 只需重载这个操作符然后排序,一切搞定

代码

class Solution {public:    string PrintMinNumber(vector
numbers) { string s = ""; //quickSort(numbers, 0, numbers.size()-1); sort(numbers.begin() , numbers.end() , smaller); for(auto i : numbers) s+= to_string(i); return s; } bool smaller(const int &s1 ,const int &s2){ string x =to_string(s1)+to_string(s2); string y =to_string(s2)+to_string(s1); return x

如果你想手敲一个快速排序的话也可以,顺便练练手,毕竟面试常考:

void quickSort(vector
&a, int l , int r){ int i = l, j = r; if(i < j){ int key = a[i]; while(i < j){ while(i

[1]

转载于:https://www.cnblogs.com/xiaozhi007/p/7249552.html

你可能感兴趣的文章
文件服务器 之 ProFTPD+MySQL 认证
查看>>
SQL Server Logins, Database Users, Database Roles and Schemas
查看>>
makefile语法
查看>>
Python3.x和Python2.x的区别
查看>>
pickle和cPickle:Python对象的序列化(上)
查看>>
C#操作RTF文档
查看>>
Dreamweaver & Flash & Photoshop网页设计基础与实例教程(职业白金版)
查看>>
UESTC 1153 The Queen's New Necklaces (Burnside定理)
查看>>
acdream1197 Points In Cuboid
查看>>
topcoder srm 390 div1
查看>>
无法远程链接sqlserver的解决办法
查看>>
WinRT比.NET快了,还是Win8比Win7快
查看>>
SecureCRT 字体 颜色 修改 背景色 键盘映射 Home end delete
查看>>
【内核】Linux 2.6 内存反向映射机制 Reverse Mapping
查看>>
jQuery实现删除option控件下的元素
查看>>
Qt中translate、tr关系 与中文问题
查看>>
反射的两个过滤枚举
查看>>
Android编程之常识 - 混淆
查看>>
源码分析六(org.springframework.util包之Assert类)
查看>>
源码分析八(org.springframework.util包之StringUtils类))
查看>>