基本資料#
難易度: medium 第一次嘗試: 2025-04-21
- 總花費時間:20:00.00
解題思路#
隱藏的序列必須落在 minK 和 maxK 的範圍內。
因此,我們可以遍歷 differences 陣列,記錄累加結果 (now) 的最小值和最大值。
最終可以透過移動這個範圍到 [lower, upper] 中來計算可能的隱藏序列數量。
解法#
class Solution:
def numberOfArrays(self, differences: List[int], lower: int, upper: int) -> int:
min_, max_ = 0, 0
now = 0
for diff in differences:
now += diff
min_ = min(now, min_)
max_ = max(now, max_)
if max_ - min_ > upper - lower:
return 0
bound = max_ - min_
return upper - lower - bound + 1
收穫#
NA
遇到的問題#
一開始,我將 min_ 和 max_ 初始化為 float("inf") 和 float("-inf")。
我以為遍歷完 differences 後就能正確得到最小值和最大值。
但我忽略了只有一個元素的邊界情況。
例如,當 differences = [-40] 時,min_ 和 max_ 都會是 -40,
但這其實是一個差分陣列,真正的範圍應該是從 0 到 -40。
所以我將初始化改為 min_ = max_ = 0,以正確處理這種測資。
