leetcode 面試題16 11 跳水板

2021-10-07 22:10:11 字數 1430 閱讀 2434

"""

你正在使用一堆木板建造跳水板。有兩種型別的木板,其中長度較短的木板長度為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...