翻转子数组得到最大的数组值(数学题)
class Solution {
public:
int maxValueAfterReverse(vector<int> &nums) {
int base = 0, d = 0, mx = INT_MIN, mn = INT_MAX, n = nums.size();
for (int i = 1; i < n; i++) {
int a = nums[i - 1], b = nums[i];
base += abs(a - b); //未做任何变化的基础值
mx = max(mx, min(a, b));
mn = min(mn, max(a, b));
d = max(d, max(abs(nums[0] - b) - abs(a - b), // i=0
abs(nums[n - 1] - a) - abs(a - b))); // j=n-1
}
return base + max(d, 2 * (mx - mn));
}
};