您当前的位置: 首页 > 

IT之一小佬

暂无认证

  • 0浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

​​​​​​​跳水板

IT之一小佬 发布时间:2021-07-17 22:08:09 ,浏览量:0

你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。

返回的长度需要从小到大排列。

示例 1

输入: shorter = 1 longer = 2 k = 3

输出: [3,4,5,6]

解释: 可以使用 3 次 shorter,得到结果 3;使用 2 次 shorter 和 1 次 longer,得到结果 4 。以此类推,得到最终结果。

示例代码:

class Solution(object):
    def divingBoard(self, shorter, longer, k):
        """
        :type shorter: int
        :type longer: int
        :type k: int
        :rtype: List[int]
        """
        length_list = []
        if shorter != longer:
            for i in range(0, k+1):
                length = longer * i + shorter * (k-i)
                length_list.append(length)
            return length_list 
        elif shorter == longer and k != 0:
            return [shorter * k]
        else:
            return []

解析:

两个特例:

  1. k == 0,这个时候返回 []
  2. shorter == longer,此时结果中只有一种长度,即 shorter * k

示例代码2:

class Solution(object):
    def divingBoard(self, shorter, longer, k):
        """
        :type shorter: int
        :type longer: int
        :type k: int
        :rtype: List[int]
        """
        if k == 0:
            return []
        if shorter == longer:
            return [shorter * k]
        shorter_len = shorter * k
        longer_len = longer * k
        step = longer - shorter
        return [i for i in range(shorter_len, longer_len + 1, step)]

通过运行测试,此代码比示例代码1的运行效果好!

示例代码3:

class Solution(object):
    def divingBoard(self, shorter, longer, k):
        """
        :type shorter: int
        :type longer: int
        :type k: int
        :rtype: List[int]
        """
        if k == 0:
            return []
        if shorter == longer:
            return [shorter * k]
        res = [shorter * k]
        step = longer - shorter
        for _ in range(k):
            res.append(res[-1] + step)
        return res

思路解析:

动态规划:最开始全是短木板(k*shorter),然后每次都把上一次的一个短木板变为长木板。

状态转移方程:res.append(res[-1]+longer-shorter)

此代码运行效果超过上面的两个!

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.0886s