黑马程序员技术交流社区

标题: java算法题。万能的黑马论坛,各位帮帮忙 [打印本页]

作者: 金金金小天    时间: 2016-11-1 21:44
标题: java算法题。万能的黑马论坛,各位帮帮忙
输入一个个数较大的正整数数组[数字范围在0~9999],将部分数组元素的十进制表示连接起来排成一个数,输出能排出的所有数字中最大的一个。find例如输入数组{3423,33,456,9,8,7,21}和3,则输出的最大数为:456342333。
要求:
(1) 输出数字用十进制字符串表示
(2)除打印函数和内存创建/销毁函数外,不得使用其它库函数,如需要相似功能,请自己实现;
(2)先给出求解思路,尽量使用高效的算法。

作者: 金金金小天    时间: 2016-11-1 21:47
有点小思路。如果用键盘录入,假如是5生成0~9999之间的5个数字放在数组中,在键盘录入3,(意思大概是从这个数组中选出3个最大数),这个时候比较这3个数的索引,首先索引0,1,2,3。如果索引大的就排在最前面组成数字,(需要判断索引越界的情况)。
作者: 金金金小天    时间: 2016-11-1 21:53
比如键盘录入5。生成数组{456,9,3756,82,1}。
继续键盘录入3。得到(456,4566,82)
分别比较这3个数的索引,456、4566(索引越界需要判断的)
最终生成数字82 4566 456

作者: 金金金小天    时间: 2016-11-1 21:58
论坛的大神,帮帮忙
作者: 蔡永汪    时间: 2016-11-1 22:00
萌萌哒  路过借过~
作者: 金金金小天    时间: 2016-11-1 22:04
现在在搞安卓,java已忘完。
作者: darkfmm    时间: 2016-11-1 22:12
我的理解啊,先比较出任意数组中的最大的n个数,然后存入另一个数组或者集合中,然后便历其中元素,分别比较其首位数字的大小,如果一样则进行下一位的比较,将排好顺序的数字存入下一个容器,练成字符串,最后转成数组,我去试试,看看行不行
作者: yeshusheng    时间: 2016-11-1 22:25
小菜鸟爱莫能助
作者: feiruo521    时间: 2016-11-2 00:25
萌新路过围观,貌似好高深的样子





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2