面試題 16.11. 跳水板
你正在使用一堆木板建造跳水板钾挟。有兩種類型的木板履羞,其中長度較短的木板長度為shorter枣申,長度較長的木板長度為longer嚷缭。你必須正好使用k塊木板饮亏。編寫一個方法,生成跳水板所有可能的長度。
返回的長度需要從小到大排列克滴。
示例
輸入:
shorter = 1
longer = 2
k = 3
輸出: {3,4,5,6}
提示:
0 < shorter <= longer
0 <= k <= 100000
解題思路:
簡單數(shù)學(xué)推導(dǎo)逼争,注意題目中要求正好使用K塊木板,所以公式想好即可劝赔。注意特殊條件誓焦,shorter與longer相等,和k = 0的條件:
class Solution:
def divingBoard(self, shorter: int, longer: int, k: int) -> List[int]:
'''
迭代法
'''
result = []
if not k:
return []
if shorter == longer:
return [shorter*k]
for i in range(k+1):
board = shorter*(k-i)+longer*i
result.append(board)
return result