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]