8.1 前缀和
约 199 字小于 1 分钟
2025-01-09
1.1 基础
思路:要三者和最小,可以先找山头(固定),再找两边最小的,但是山头不知道后面的谁最小,因此可以先从后往前遍历得到后缀最小值
suf
,再从前往后遍历class Solution: def minimumSum(self, nums: List[int]) -> int: left_min = nums[0] n = len(nums) suf = [0] * n suf[-1] = nums[-1] for j in range(n - 2, -1, -1): suf[j] = min(suf[j + 1], nums[j]) pre = nums[0] res = float('inf') for i in range(1, n - 1): if pre < nums[i] > suf[i + 1]: res = min(res, pre + nums[i] + suf[i + 1]) pre = min(pre, nums[i]) return -1 if res == inf else res
时间复杂度:O(n),其中 n 为 nums 的长度。
空间复杂度:O(n)