Skip to content

4078. Maximum Alternating Sum Of Squares


4078. Maximum Alternating Sum of Squares

Medium


You are given an integer array nums. You may rearrange the elements in any order.

The alternating score of an array arr is defined as:

  • score = arr[0]2 - arr[1]2 + arr[2]2 - arr[3]2 + ...

Return an integer denoting the maximum possible alternating score of nums after rearranging its elements.

 

Example 1:

Input: nums = [1,2,3]

Output: 12

Explanation:

A possible rearrangement for nums is [2,1,3], which gives the maximum alternating score among all possible rearrangements.

The alternating score is calculated as:

score = 22 - 12 + 32 = 4 - 1 + 9 = 12

Example 2:

Input: nums = [1,-1,2,-2,3,-3]

Output: 16

Explanation:

A possible rearrangement for nums is [-3,-1,-2,1,3,2], which gives the maximum alternating score among all possible rearrangements.

The alternating score is calculated as:

score = (-3)2 - (-1)2 + (-2)2 - (1)2 + (3)2 - (2)2 = 9 - 1 + 4 - 1 + 9 - 4 = 16

 

Constraints:

  • 1 <= nums.length <= 105
  • -4 * 104 <= nums[i] <= 4 * 104

Solution

class Solution {
    public long maxAlternatingSum(int[] nums) {
        int n = nums.length;
        ArrayList<Integer> temp = new ArrayList<>(); 
        for (int ele : nums)
            temp.add(Math.abs(ele));
        Collections.sort(temp);
        int arr[] = new int[n];
        int idx = 0, run = temp.size() - 1;
        while (idx < n) {
            arr[idx] = temp.get(run);
            run--;
            idx += 2;
        }
        idx = 1;
        while (idx < n) {
            arr[idx] = temp.get(run);
            run--;
            idx += 2;
        }
        long res = 0;
        for (int i = 0; i < n; i++) {
            if (i % 2 == 0)
                res += arr[i] * 1L * arr[i];
            else
                res -= arr[i] * 1L * arr[i];
        }
        return res;
    }
}

Complexity Analysis

  • Time Complexity: O(?)
  • Space Complexity: O(?)

Explanation

[Add detailed explanation here]