【題目】面試題 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;
}
}