翻转子数组得到最大的数组值(数学题)

929code / 2023-05-12 / 原文

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));
    }
};