2908. 元素和最小的山形三元组 I
思路:遍历每一个j,那么我们只需要找到前半段和后半段的最小值,然后通过判断是否符合要求来更新最小值ans。这里的前半段我们在遍历j的时候就可以记录最小值;后半段,我们预处理出最小值即可
class Solution {
public:
int minimumSum(vector<int>& nums) {
auto last=nums;
for(int i=nums.size()-2;i>=0;i--){
last[i]=min(last[i+1],nums[i]);
}
int mn=nums[0];
int ans=200;
for(int i=1;i<nums.size()-1;i++){
if(nums[i]>mn&&nums[i]>last[i+1])
ans=min(ans,nums[i]+mn+last[i+1]);
mn=min(mn,nums[i]);
}
return ans==200? -1:ans;
}
};