当前位置:网站首页>给出一个数组,如 [7864, 284, 347, 7732, 8498],现在需要将数组中的数字拼接起来,返回「最大的可能拼出的数字」
给出一个数组,如 [7864, 284, 347, 7732, 8498],现在需要将数组中的数字拼接起来,返回「最大的可能拼出的数字」
2022-07-07 21:52:00 【漁陽】
/** * 给出一个数组,如 [7864, 284, 347, 7732, 8498], * 现在需要将数组中的数字拼接起来,如按顺序依次拼接为:786428434777328498,数组中的数字拼接顺序可以任意, * 编写程序,返回「最大的可能拼出的数字」。(以上面数组为例,返回849878647732347284) * @param arrays * @return */
解题思路:拆解数组中的每一个数,将数值存放到栈中(明显的栈形数据结构);排序(用到了冒泡排序的思路) ,排序过程比较大小通过各数值之间的高位到低位的大小比较,比如8,70,按照这个排序8属于大者;最后将数组从后向前输出即完成拼接
public static String getMaxNum(long[] arrays) {
if (arrays == null || arrays.length == 0) {
return "0";
}
//存放所有拆解后的数据集
Map<Long, Stack<Integer>> numMaps = Maps.newHashMap();
for (long tn : arrays) {
long t = tn;
Stack<Integer> qu = new Stack<>();
do {
qu.push((int) t % 10);
t = t / 10;
} while (t > 0);
numMaps.put(tn, qu);
}
for (int i = 0; i < arrays.length; i++) {
for (int j = 0; j < arrays.length - i - 1; j++) {
Stack<Integer> f = numMaps.get(arrays[j]);
Stack<Integer> s = numMaps.get(arrays[j + 1]);
//比较大小
int fn = f.size() - 1;
int sn = s.size() - 1;
do {
if (f.get(fn) < s.get(sn)) {
break;
}
if (f.get(fn) > s.get(sn)) {
long tn = arrays[j];
arrays[j] = arrays[j + 1];
arrays[j + 1] = tn;
break;
}
fn--;
sn--;
} while (fn >= 0 && sn >= 0);
if (fn == -1 || sn == -1) {
fn = fn == -1 ? 0 : fn;
sn = sn == -1 ? 0 : sn;
if (f.get(fn) > s.get(sn)) {
long tn = arrays[j];
arrays[j] = arrays[j + 1];
arrays[j + 1] = tn;
}
}
}
}
StringBuffer sb = new StringBuffer();
for (int i = arrays.length - 1; i >= 0; i--)
sb.append(arrays[i]);
return sb.toString();
}
执行Case数据
long a[] = new long[]{764, 76, 77};
long b[] = new long[]{767, 76, 77};
long c[] = new long[]{7864, 284, 347, 7732, 8498};
执行结果
边栏推荐
- 网络安全-beef
- Wechat forum exchange applet system graduation design completion (8) graduation design thesis template
- Bea-3xxxxx error code
- Dynamics 365 find field filtering
- Brush question 5
- Archlinux install MySQL
- Kubernetes' simplified data storage storageclass (creation, deletion and initial use)
- Network security - information query of operating system
- 网络安全-对操作系统进行信息查询
- 微信论坛交流小程序系统毕业设计毕设(5)任务书
猜你喜欢
Wechat forum exchange applet system graduation design completion (1) development outline
PMP项目管理考试过关口诀-1
Wechat forum exchange applet system graduation design completion (8) graduation design thesis template
When copying something from the USB flash disk, an error volume error is reported. Please run CHKDSK
云原生正在吞噬一切,开发者该如何应对?
Unity3D学习笔记6——GPU实例化(1)
leetcode-520. Detect capital letters -js
深入理解Mysql锁与事务隔离级别
In the field of software engineering, we have been doing scientific research for ten years!
三问TDM
随机推荐
kubernetes的简单化数据存储StorageClass(建立和删除以及初步使用)
V20变频器手自动切换(就地远程切换)的具体方法示例
Network security - information query of operating system
Network security - Eternal Blue
Unity3D学习笔记6——GPU实例化(1)
CXF call reports an error. Could not find conduct initiator for address:
Install a new version of idea. Double click it to open it
ROS2专题(03):ROS1和ROS2的区别【01】
2021ICPC上海 H.Life is a Game Kruskal重构树
深入理解Mysql锁与事务隔离级别
Install Fedora under RedHat
海内外技术人们“看”音视频技术的未来
UE4_UE5结合罗技手柄(F710)使用记录
USB(十五)2022-04-14
智慧社區和智慧城市之間有什麼异同
为什么市场需要低代码?
树后台数据存储(採用webmethod)[通俗易懂]
Unity3D学习笔记5——创建子Mesh
网络安全-永恒之蓝
微信论坛交流小程序系统毕业设计毕设(2)小程序功能