【刷题剑指offer】把数组排成最小的数
来源:互联网 发布:java中的io和nio 编辑:程序博客网 时间:2024/06/10 08:54
题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323.
思路:1、全排列后排序取出最小,复杂度太高了
2、利用String类,先将整数数组转为字符串数组,然后字符串数组进行排序,最后依次输出字符串数组即可。这里注意的是字符串的比较函数需要重新定义,不是比较a和b,而是比较ab与 ba。如果ab < ba,则a < b;如果ab > ba,则a > b;如果ab = ba,则a = b。比较函数的定义是本解决方案的关键。
#include <iostream> #include <string> #include <sstream> #include <algorithm> using namespace std; bool compare(const string& str1, const string &str2) { string s1=str1+str2; string s2=str2+str1; return s1<s2; } void ComArrayMin(int *pArray, int num) { int i; string *pStrArray=new string[num]; for(i=0; i<num; i++) { stringstream stream; stream<<pArray[i]; stream>>pStrArray[i]; } sort(pStrArray, pStrArray+num, compare); for(i=0; i<num; i++) cout<<pStrArray[i]; cout<<endl; delete[] pStrArray; }
阅读全文
0 0
- 【刷题剑指offer】把数组排成最小的数
- 剑指offer-33:把数组排成最小的数
- 剑指offer:把数组排成最小的数
- 【剑指offer】把数组排成最小的数
- 【剑指offer】Q33:把数组排成最小的数
- 九度《剑指offer》把数组排成最小的数
- 剑指Offer之把数组排成最小的数
- 剑指offer系列源码-把数组排成最小的数
- 剑指offer 33 把数组排成最小的数
- 剑指offer--把数组排成最小的数
- 剑指offer之把数组排成最小的数
- 《剑指offer》把数组排成最小的数
- 剑指offer:把数组排成最小的数
- 【剑指Offer】把数组排成最小的数
- 剑指offer—把数组排成最小的数
- 《剑指offer》——把数组排成最小的数
- 【剑指offer】之把数组排成最小的数
- 剑指offer:把数组排成最小的数
- Linux常用指令
- Android NE发生定位辅助之addr2line
- JVM高级特性与实践(六):Class类文件的结构(访问标志,索引、字段表、方法表、属性表集合)
- String类中自动重写compareTo( )方法对汉字的比较
- Codeforces Round #385 (Div. 2) 745B Hongcow Solves A Puzzle
- 【刷题剑指offer】把数组排成最小的数
- Codeforces 189A
- 数组a[]中&a和a的区别
- 第一个Java程序
- flickr 的全局主键生成方案
- Java程序运行时,没有赋值的基本类型变量会在内存中分配空间吗?
- DataFrame.to_dict(orient='dict')
- break,comtinue,returned的区别
- Spring boot 页面分离 (freemarker 分离)