C ++子数组中的“ max + min”的最小值
问题陈述
给定一个n个正元素的数组,鉴于子数组的大小应大于等于2,因此我们需要找到子数组中max和min元素的最小和。
示例
如果arr[]={10,5,15,7,2,1,3},那么当我们加上“2+1”时,“max+min”之和为3。
算法
将任何元素添加到子数组都不会增加最大值和最小值的总和。
由于数组的最大值在向数组添加元素时永远不会减少。仅当我们添加更大的元素时,它才会增加。因此,始终仅考虑长度为2的那些子数组始终是最佳选择。
因此,考虑长度为2的所有子阵列,比较总和并取最小值。
示例
#include <bits/stdc++.h>
using namespace std;
int getMaxSum(int *arr, int n) {
if (n < 2) {
return -1;
}
int result = arr[0] + arr[1];
for (int i = 1; i + 1 < n; ++i) {
result = min(result, (arr[i] + arr[i + 1]));
}
return result;
}
int main() {
int arr[] = {10, 5, 15, 7, 2, 1, 3};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Maximum sum = " << getMaxSum(arr, n) << endl;
return 0;
}当您编译并执行上述程序时。它产生以下输出-
输出结果
Maximum sum = 3
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短