《剑指offer》刷题笔记(时间效率):把数组排成最小的数
来源:互联网 发布:java concurrentlist 编辑:程序博客网 时间:2024/06/06 11:31
《剑指offer》刷题笔记(时间效率):把数组排成最小的数
- 转载请注明作者和出处:http://blog.csdn.net/u011475210
- 代码地址:https://github.com/WordZzzz/Note/tree/master/AtOffer
- 刷题平台:https://www.nowcoder.com/
- 题 库:剑指offer
- 编 者:WordZzzz
- 剑指offer刷题笔记时间效率把数组排成最小的数
- 题目描述
- 解题思路
- C版代码实现
- Python版代码实现
题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
解题思路
遇到这个题,全排列当然可以做,但是时间复杂度为O(n!)。在这里我们自己定义一个规则,对拼接后的字符串进行比较。
排序规则如下:
- 若ab > ba 则 a 大于 b,
- 若ab < ba 则 a 小于 b,
- 若ab = ba 则 a 等于 b;
根据上述规则,我们需要先将数字转换成字符串再进行比较,因为需要串起来进行比较。比较完之后,按顺序输出即可。
C++版代码实现
class Solution {public: string PrintMinNumber(vector<int> numbers) { int len = numbers.size(); if(len == 0) return ""; sort(numbers.begin(), numbers.end(),cmp); string res; for(int i=0; i < len; ++i) res += to_string(numbers[i]); return res; } static bool cmp(int a, int b){ string A = to_string(a) + to_string(b); string B = to_string(b) + to_string(a); return A < B; }};
Python版代码实现
# -*- coding:utf-8 -*-class Solution: def PrintMinNumber(self, numbers): # write code here if not numbers: return "" compare = lambda a, b:cmp(str(a) + str(b), str(b) + str(a)) cur = sorted(numbers, cmp = compare) return "".join(str(s) for s in cur)
系列教程持续发布中,欢迎订阅、关注、收藏、评论、点赞哦~~( ̄▽ ̄~)~
完的汪(∪。∪)。。。zzz
阅读全文
0 0
- 《剑指offer》刷题笔记(时间效率):把数组排成最小的数
- 剑指offer 33题 【时间空间效率的平衡】把数组排成最小的数
- 剑指offer-5-面试33:把数组排成最小的数(时间效率)
- 剑指offer:(33)时间效率 :把数组排成最小的数
- 剑指offer 5.2 时间效率4 -把数组排成最小的数
- 【剑指offer】5.2时间效率——面试题33:把数组排成最小的数
- 剑指offer(34):把数组排成最小的数
- 剑指offer(29)-把数组排成最小的数
- 剑指offer:把数组排成最小的数(java)
- 剑指offer-把数组排成最小的数(Java)
- 把数组排成最小的数(剑指Offer)
- 剑指offer刷题之java实现的把数组排成最小的数
- 剑指offer第32题(把数组排成最小的数)
- 剑指offer 编程题(31):把数组排成最小的数返回string
- 剑指offer-33:把数组排成最小的数
- 剑指offer:把数组排成最小的数
- 【剑指offer】把数组排成最小的数
- 【剑指offer】Q33:把数组排成最小的数
- Android五大布局
- JavaScript-俄罗斯方块
- volatile关键字
- 【ECS】云服务器ECS是什么
- shell 逐个压缩备份数据
- 《剑指offer》刷题笔记(时间效率):把数组排成最小的数
- LINUX 动态库编译和使用的注意事项
- Linux Win10 双系统时无法挂载硬盘的解决方法
- elk启动命令
- 超简单的居中
- 运行iDT算法代码及后续特征编码
- 类加载器
- 一天入门redis-安装连接、基本数据类型
- hbase基于快照的数据迁移