2909. Minimum Sum of Mountain Triplets II
Tags:
class Solution:
    def minimumSum(self, nums: List[int]) -> int:
        N = len(nums)
        INF = 10 ** 20
        def gen(lst):
            res = [INF]
            for i in range(len(lst)):
                res.append(min(lst[i], res[-1]))
            return res
        prefix = gen(nums)
        suffix = gen(nums[::-1])[::-1]
        res = INF
        for i in range(1, N-1):
            if prefix[i] < nums[i] and nums[i] > suffix[i+1]:
                res = min(res, prefix[i] + nums[i] + suffix[i+1])
        return res if res != INF else -1