乐趣区

Leetcode面试题-1611-跳水板-Python实现

  • 题目要求:

  • 思路:

    • 分为三种情况:
    • 第一种情况,k = 0,也就是要使用 0 块木板,直接返回空数组即可
    • 第二种情况,longer 与 shorter 相同,那么只有唯一的解是shorter * k
    • 第三种情况,shorter 与 longer 不相同,k 也不为 0

      • 那么先把最小的结果 shorter * k 赋给遍历 tmp,把 tmp 添加到结果数组中,tmp 作为遍历的起点,把 tmp – shorter + longer 就是下一个结果,遍历的终点是当 tmp 等于 longer * k 时,所有的结果就都在结果数组中了
  • 核心代码:
res = []
if k == 0:
    return res
if longer == shorter:
    return [shorter * k]
tmp = shorter * k
res.append(tmp)
while tmp != longer * k:
    tmp = tmp - shorter + longer
    res.append(tmp)
return res
  • 完整代码:
class Solution:
    def divingBoard(self, shorter: int, longer: int, k: int) -> List[int]:
        res = []
        if k == 0:
            return res
        if longer == shorter:
            return [shorter * k]
        tmp = shorter * k
        res.append(tmp)
        while tmp != longer * k:
            tmp = tmp - shorter + longer
            res.append(tmp)
        return res
退出移动版