跳水板

一,问题

你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为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))

 

posted @ 2020-07-08 21:14  董不耀  阅读(248)  评论(0编辑  收藏  举报