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