题目:
你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。
返回的长度需要从小到大排列。
示例:
输入:
shorter = 1
longer = 2
k = 3
输出: {3,4,5,6}来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/diving-board-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
先初始化一个数组,令其全部为shorter且长度为k。然后通过遍历,改变i处为longer,计算求和。计算求和的时候需要加longer和shorter的差可以不超出时间限制。最后将和的数组去重。
代码:
/**
* @param {number} shorter
* @param {number} longer
* @param {number} k
* @return {number[]}
*/
var divingBoard = function(shorter, longer, k) {
if(k==0) return [];
var c=[];
for(var i=0;i<k;i++){
c.push(shorter)
}
var d=[]
var total=0;
c.forEach(value=>{
total+=value;
})
d.push(total)
for(var i=0;i<k;i++){
c[i]=longer;
total+=longer-shorter;
d.push(total)
}
var u=new Set(d)
return Array.from(u);
};