元素和最小的山形三元组.18103310

Problem: 2908. 元素和最小的山形三元组 I

思路

先记录每个元素左边的最小数与右边的最小数。统计所有符合条件的数的最小值

复杂度

时间复杂度:

$O(n)$

空间复杂度:

$O(n)$

Code

class Solution {
public:
    int minimumSum(vector<int>& nums) {
        int n=nums.size();
        vector<int>left(nums.size());
        vector<int>right(nums.size());
        left[0]=nums[0];
        right[n-1]=nums[n-1];
        for(int i=1;i<n-1;i++){
            left[i]=min(nums[i-1],left[i-1]);
        }
        for(int i=n-2;i>=1;i--){
            right[i]=min(nums[i+1],right[i+1]);
        }
        int res=INT_MAX;
        for(int i=1;i<n-1;i++){
            if(nums[i]>left[i]&&nums[i]>right[i]){
                res=min(res,nums[i]+left[i]+right[i]);
            }
        }
        if(res==INT_MAX)    return -1;
        return res;
    }
};
posted @ 2024-03-29 10:47  认真游泳的鱼  阅读(24)  评论(0)    收藏  举报