【剑指offer】把数组排成最小的数
来源:互联网 发布:局域网打印机端口 编辑:程序博客网 时间:2024/06/11 18:14
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
分析:题目要求比较整数数组组成后的数的大小,在int及long中来处理很容易超出范围,实际上大数问题一般放在字符串中来处理。我们把数组元素两两比较,比较的方法是两个数a、b,若ab>ba,就规定a>b,否则a<b;用这种方法把数组按从小到大的顺序排列并保存到字符串中。
string PrintMinNumber(vector<int> numbers) {if (numbers.empty()) return "";if (numbers.size() == 1) return to_string(numbers.back());string res = "";int i = 0;while (i < numbers.size() - 1){ //只需确定n-1个位置的值;int j = i + 1,k=i;while (j < numbers.size()){ //k保存从数组下标i之后的"最小值"下标;string ab = to_string(numbers[k]) + to_string(numbers[j]);string ba = to_string(numbers[j]) + to_string(numbers[k]);if (ab>ba) k = j;j++;}swap(numbers[i], numbers[k]); res += to_string(numbers[i]);i++;}res += to_string(numbers.back()); return res;}
阅读全文
0 0
- 剑指offer-33:把数组排成最小的数
- 剑指offer:把数组排成最小的数
- 【剑指offer】把数组排成最小的数
- 【剑指offer】Q33:把数组排成最小的数
- 九度《剑指offer》把数组排成最小的数
- 剑指Offer之把数组排成最小的数
- 剑指offer系列源码-把数组排成最小的数
- 剑指offer 33 把数组排成最小的数
- 剑指offer--把数组排成最小的数
- 剑指offer之把数组排成最小的数
- 《剑指offer》把数组排成最小的数
- 剑指offer:把数组排成最小的数
- 【剑指Offer】把数组排成最小的数
- 剑指offer—把数组排成最小的数
- 《剑指offer》——把数组排成最小的数
- 【剑指offer】之把数组排成最小的数
- 剑指offer:把数组排成最小的数
- 剑指offer:把数组排成最小的数
- 冒泡
- Python正则match()和search()的理解
- 39个必知必会的SQL 性能调优方法
- Greatest Naruto Army
- 0714学习总结(多态性,typeid)
- 【剑指offer】把数组排成最小的数
- 程序员的学习和积累
- 嵌入式学习10(C语言五大内存区间,变量的作用域和生存期,变量的存储类型)
- IDEA部分快捷键 git文件过滤以及其他杂文
- 压缩多张图片,解压后发现图片文件损坏的问题解决
- POJ 1724 ROADS (DFS)
- 0717学习总结(c++模板)
- 创建数据库的时候就将数据库保存到SDcard中
- 第2节-Linux的硬盘分区格式