一,问题
你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。
返回的长度需要从小到大排列。
例如,shorter=1 longer=3 k=3
输出{3,5,7,9}
二,分析
两块木板,抽三块,怎么抽?
1,先抽三块shorter:3=1+1+1
2,之后用一个longer替换掉一个shorter:5=1+1+3
3,再用两个longer替换掉两个shorter:7=1+3+3
4,最后用三个longer替换掉三个shorter:9=3+3+3
可以看到,最终的结果{3,5,7,9}是一个等差数列,公差为 longer-shorter,也即3-1=2
输出为{shorter*k,shorter*k+(longer-shorter), 。。。,longer*k }
三,代码
class Solution(object):
def divingBoard(self, shorter, longer, k):
if k==0:
return []
elif shorter==longer:
return [k*longer]
return range(shorter*k,longer*k+1,(longer-shorter))