一、题目描述
小明有 n 块木板,第 i ( 1 ≤ i ≤ n ) 块木板长度为 ai。 小明买了一块长度为 m 的木料,这块木料可以切割成任意块,拼接到已有的木板上,用来加长木板。 小明想让最短的木板尽量长。 请问小明加长木板后,最短木板的长度可以为多少?
二、输入描述
输入的第一行包含两个正整数,n(1≤n≤103)、m(1≤m≤106);
n表示木板数,m表示木板长度。输入的第二行包含n个正整数,a1,a2,…an(1≤ai≤106)。
三、输出描述
输出的唯一一行包含一个正整数,表示加长木板后,最短木板的长度最大可以为多少?
四、解题思路
- 读取输入的木板数 n 和木板长度 m;
- 读取输入的木板长度列表,存储在一个整数列表 boardList 中;
- 对木板长度列表进行排序,从小到大排列;
- 初始化变量 max 为0,用于存储最短木板的最大长度;
- 进行 add次木板加长操作:
- 将最短的木板长度加1;
- 对木板长度列表进行排序,保持从小到大排列;
- 更新最大长度 max,取最短木板的长度和当前最大长度的较大值。
- 输出最大长度 max。
五、Java算法源码