难度:简单
你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为
shorter
,长度较长的木板长度为longer
。你必须正好使用k
块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。
示例:
输入: shorter = 1 longer = 2 k = 3 输出: {3,4,5,6}提示:
- 0 < shorter <= longer
- 0 <= k <= 100000
分析:
遍历一遍即可,i块shorter时,longer为k-i;需要注意的是当shorter==longer时,只有一个值。
代码:
public class Solution {
public int[] divingBoard(int shorter, int longer, int k) {
if(k==0)
return new int[0];
ArrayList<Integer> list = new ArrayList<>();
list.add(shorter * k);
int temp_now = -1,temp_last = shorter * k;
for (int i = 1; i <= k; i++) {
temp_now = shorter * (k-i) + longer * i;
if(temp_last != temp_now)
list.add(temp_now);
temp_last = temp_now;
}
int[] sum = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
sum[i] = list.get(i);
}
return sum;
}
}
结果: