目录
- 专栏导读
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 五、Java算法源码
- 六、效果展示
- 1、输入
- 2、输出
- 3、说明
华为OD机试 2023B卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
给定一个整型数组,请从该数组中选择3个元素组成最小数字并输出(如果数组长度小于3,则选择数组中所有元素来组成最小数字)。
二、输入描述
行用半角逗号分割的字符串记录的整型数组,0<数组长度<=100,0<整数的取值范=10000。
三、输出描述
由3个元素组成的最小数字,如果数组长度小于3,则选择数组中所有元素来组成最小数字。
四、解题思路
- 输入若干个数,逗号隔开;
- 按照数字大小升序排序;
- 取出前3个数;
- 按照组合数字升序排序;
- 组合成数,输出。
五、Java算法源码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = Arrays.asList(sc.nextLine().split(",")).stream().mapToInt(Integer::parseInt).toArray();
// 按照数字大小升序排序
Arrays.sort(arr);
// 取出3个数
List<String> list = new ArrayList<>();
int n = arr.length >= 3 ? 3 : arr.length;
for (int i = 0; i < n; i++) {
list.add(String.valueOf(arr[i]));
}
// 按照组合数字升序排序
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return (o1 + o2).compareTo(o2 + o1);
}
});
// 组合成数,输出
StringBuilder builder = new StringBuilder();
list.forEach(x -> builder.append(x));
System.out.println(builder);
}
六、效果展示
1、输入
21,30,62,5,31
2、输出
21305
3、说明
(1)按照数字大小升序排序
5,21,30,31,62
(2)取出3个数
5,21,30
(3)按照组合数字升序排序
21305
🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。