"""
你正在使用一堆木板建造跳水板。有兩種型別的木板,其中長度較短的木板長度為shorter,長度較長的木板長度為longer。你必須正好使用k塊木板。編寫乙個方法,生成跳水板所有可能的長度。
返回的長度需要從小到大排列。
示例:輸入:
shorter = 1
longer = 2
k = 3
輸出:
"""# 思路一 自己寫的笨方法
class
solution
:def
divingboard
(self, shorter:
int, longer:
int, k:
int)
: list_result =
for i in
range
(k +1)
: shorter_len = shorter *
(k - i)
longer_len = longer * i
len_ = shorter_len + longer_len
if len_ ==0:
continue
if shorter == longer:
break
return list_result
# 思路二 網上的優解
class
solution
(object):
defdivingboard
(self, shorter:
int, longer:
int, k:
int)
: ret =
# 首先考慮k == 0的情況
if k ==0:
return ret
# shorter和longer相等,則結果永遠是只有乙個
if shorter == longer:
return ret
# 每增加乙個長跳板,總長度必然增加longer - shorter,而且一共有k+1種組合方式
# 所以只需要從最小長度開始疊加,最大長度則是longer * k ,最小長度則是 shorter * k
dist = longer - shorter
len_min = shorter * k
len_max = longer * k
# 這裡面用range來直接生成列表
ret =
list
(range
(len_min, len_max +
1, dist)
)return ret
s = solution(
)print
(s.divingboard(1,
1,1000
))
leetcode 面試題 16 11 跳水板
面試題 16.11.跳水板 你正在使用一堆木板建造跳水板。有兩種型別的木板,其中長度較短的木板長度為shorter,長度較長的木板長度為longer。你必須正好使用k塊木板。編寫乙個方法,生成跳水板所有可能的長度。返回的長度需要從小到大排列。示例 輸入 shorter 1 longer 2 k 3輸...
leetcode 面試題 16 11 跳水板
題目 你正在使用一堆木板建造跳水板。有兩種型別的木板,其中長度較短的木板長度為shorter,長度較長的木板長度為longer。你必須正好使用k塊木板。編寫乙個方法,生成跳水板所有可能的長度。返回的長度需要從小到大排列。示例 輸入 shorter 1 longer 2 k 3 輸出 解題思路 先初始...
LeetCode 面試題 16 11 跳水板
你正在使用一堆木板建造跳水板。有兩種型別的木板,其中長度較短的木板長度為shorter,長度較長的木板長度為longer。你必須正好使用k塊木板。編寫乙個方法,生成跳水板所有可能的長度。返回的長度需要從小到大排列。示例 輸入 shorter 1 longer 2 k 3 輸出 0 shorter l...