【题目】面试题 16.11. 跳水板
你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。
返回的长度需要从小到大排列。
示例:
输入:
shorter = 1
longer = 2
k = 3
输出: {3,4,5,6}
提示:
0 < shorter <= longer
0 <= k <= 100000
【解题思路1】
三种情况
- k = 0,0种
- k > 0
若shorter ≠ longer,从k个短的+0个长的,到0个短的+k个长的依次组成k + 1种
若shorter = longer,一种 k * shorter 长度
class Solution {
public int[] divingBoard(int shorter, int longer, int k) {
if(k == 0){
return new int[]{};
}
if(shorter == longer){
return new int[]{k * shorter};
}
int[] ans = new int[k+1];
int sh = k, lo = 0;
int i = 0;
while(sh >= 0){
ans[i] = shorter * sh + longer * lo;
sh--;
lo++;
i++;
}
return ans;
}
}