題目
你正在使用一堆木板建造跳水板债沮。有兩種類型的木板缕陕,其中長度較短的木板長度為 shorter,長度較長的木板長度為 longer樱蛤。你必須正好使用 k 塊木板马昙。編寫一個方法,生成跳水板所有可能的長度刹悴,返回的長度需要從小到大排列行楞。
示例:
輸入: shorter = 1 longer = 2 k = 3
輸出: {3,4,5,6}
提示:0 < shorter <= longer,0 <= k <= 100000
思路
這個排列組合很簡單土匀,設 i 是使用短木板的數(shù)量子房,當你用了 i 個 shorter 的話,那么一定只剩下k - i的 longer,所以 i 在 [0, k] 的范圍里做一次遍歷证杭,分別把得到的結果都加到 res 數(shù)組里即可田度。
注意特殊情況:
- k = 0 直接返回空數(shù)組。
- shorter = longer 的時候解愤,直接返回 [shorter * k]镇饺。
/**
* @param {number} shorter
* @param {number} longer
* @param {number} k
* @return {number[]}
*/
const divingBoard = function (shorter, longer, k) {
if (k === 0) {
return []
}
if (shorter === longer) {
return [k * shorter]
}
const res = []
for (let i = 0; i <= k; i++) {
let longCount = i
let shortCount = k - i
res.push(shortCount * shorter + longCount * longer)
}
return res
}