当前位置:网站首页>Given an array, such as [7864, 284, 347, 7732, 8498], now you need to splice the numbers in the array to return the "largest possible number."
Given an array, such as [7864, 284, 347, 7732, 8498], now you need to splice the numbers in the array to return the "largest possible number."
2022-07-07 23:27:00 【Yuyang】
/** * Give an array , Such as [7864, 284, 347, 7732, 8498], * Now you need to splice the numbers in the array , If spliced in sequence, it is :786428434777328498, The number splicing order in the array can be arbitrary , * Programming , return 「 The most likely number to spell 」.( Take the above array as an example , return 849878647732347284) * @param arrays * @return */
Their thinking : Disassemble every number in the array , Store the value on the stack ( Obvious stack data structure ); Sort ( The idea of bubble sorting is used ) , The sorting process compares the size through the size comparison between the high and low values , such as 8,70, Sort by this 8 Belong to the big one ; Finally, the array is output from the back to the front to complete the splicing
public static String getMaxNum(long[] arrays) {
if (arrays == null || arrays.length == 0) {
return "0";
}
// Store all disassembled data sets
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]);
// Compare the size
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();
}perform Case data
long a[] = new long[]{764, 76, 77};
long b[] = new long[]{767, 76, 77};
long c[] = new long[]{7864, 284, 347, 7732, 8498};Execution results

边栏推荐
- php 使用阿里云存储
- windows设置redis开启自动启动
- 进度播报|广州地铁七号线全线29台盾构机全部完成始发
- Matlab SEIR infectious disease model prediction
- Installing spss25
- 系统架构设计师备考经验分享:论文出题方向
- ArcGIS: two methods of attribute fusion of the same field of vector elements
- Matlab 信号处理【问答随笔·2】
- 13、 System optimization
- One week learning summary of STL Standard Template Library
猜你喜欢

USB (XV) 2022-04-14

Wechat forum exchange applet system graduation design (5) assignment

When copying something from the USB flash disk, an error volume error is reported. Please run CHKDSK

Installing spss25

Wechat forum exchange applet system graduation design completion (8) graduation design thesis template

js 获取对象的key和value

Digital procurement management system for fresh food industry: help fresh food enterprises solve procurement problems and implement online procurement throughout the process

Matlab 信号处理【问答随笔·2】

re1攻防世界逆向

Mysql索引优化实战二
随机推荐
产业共融新势能,城链科技数字峰会厦门站成功举办
B_ QuRT_ User_ Guide(36)
Puce à tension stabilisée LDO - schéma de bloc interne et paramètres de sélection du modèle
Happy gathering time
电子设备行业智能供应链协同平台解决方案:解决低效, 赋能产业数字化升级
B_QuRT_User_Guide(40)
Deep understanding of MySQL lock and transaction isolation level
Entity层、DAO层、Service层、Controller层 先后顺序
Three questions TDM
Unity3D学习笔记5——创建子Mesh
城联优品作为新力量初注入,相关上市公司股价应声上涨150%
B_QuRT_User_Guide(37)
【编译原理】词法分析设计实现
Inftnews | web5 vs Web3: the future is a process, not a destination
高效的S2B2C电商系统,是这样帮助电子材料企业提升应变能力的
高级程序员必知必会,一文详解MySQL主从同步原理,推荐收藏
七月第一周
USB(十四)2022-04-12
PHP uses Alibaba cloud storage
Dynamics 365 find field filtering