系列文章目录
文章目录
前言
本人最近再练习算法,所以会发布自己的解题思路,希望大家多指教
一、题目描述
小明有 n 块木板,第 i ( 1 ≤ i ≤ n ) 块木板长度为 ai。 小明买了一块长度为 m 的木料,这块木料可以切割成任意块,拼接到已有的木板上,用来加长木板。 小明想让最短的木板尽量长。 请问小明加长木板后,最短木板的长度可以为多少?
二、输入描述
输入的第一行包含两个正整数,n(1≤n≤10^3), m(1≤m≤10^6);
n表示木板数,m表示木板长度。输入的第二行包含n个正整数,a1,a2,...an(1≤ai≤10^6);
三、输出描述
输出的唯一一行包含一个正整数,表示加长木板后,最短木板的长度最大可以为多少?
四、java代码
java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] split = scanner.nextLine().split(" ");
//获取长度为M的木料
int m = Integer.parseInt(split[1]);
int[] array = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
//倒序排序
Arrays.sort(array);
for (int i = 0; i < m; i++) {
//依次从长度M中取出1,加到排序后长度最小的木板上
array[0]++;
//重新排序
Arrays.sort(array);
}
System.out.println(array[0]);
}
五、测试用例
输入:
6 5
3 2 4 6 3 4
输出: