From ff6602c5ae08bd00b3fad14a6014a21259e7ef77 Mon Sep 17 00:00:00 2001 From: Gummalla Jashnavi <2400032492@kluniversity.in> Date: Fri, 21 Nov 2025 00:38:08 +0530 Subject: [PATCH 1/2] Add MaxAlternatingSum algorithm implementation --- .../devutils/MaxAlternatingSum.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/java/com/thealgorithms/devutils/MaxAlternatingSum.java diff --git a/src/main/java/com/thealgorithms/devutils/MaxAlternatingSum.java b/src/main/java/com/thealgorithms/devutils/MaxAlternatingSum.java new file mode 100644 index 000000000000..b671447fa375 --- /dev/null +++ b/src/main/java/com/thealgorithms/devutils/MaxAlternatingSum.java @@ -0,0 +1,19 @@ +import java.util.*; +class Solution { + public long maxAlternatingSum(int[] nums) { + int n=nums.length; + long[] a=new long[n]; + for(int i=0;i=n-k;i--){ + sum +=a[i]; + } + return 2*sum-total; + } +} From 6d4dfbef11841543b0f16adfa9fa3b7281ecf5ca Mon Sep 17 00:00:00 2001 From: Gummalla Jashnavi <2400032492@kluniversity.in> Date: Fri, 21 Nov 2025 00:39:49 +0530 Subject: [PATCH 2/2] Add MaxAlternatingSum algorithm implementation Refactored maxAlternatingSum method to use squared values and improved variable naming. --- .../devutils/MaxAlternatingSum.java | 52 ++++++++++++++----- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/thealgorithms/devutils/MaxAlternatingSum.java b/src/main/java/com/thealgorithms/devutils/MaxAlternatingSum.java index b671447fa375..dbb9bc4b88dc 100644 --- a/src/main/java/com/thealgorithms/devutils/MaxAlternatingSum.java +++ b/src/main/java/com/thealgorithms/devutils/MaxAlternatingSum.java @@ -1,19 +1,43 @@ -import java.util.*; -class Solution { +package com.thealgorithms.devutils; + +import java.util.Arrays; + +/** + * Computes the maximum alternating sum based on the squared values of the input array. + * + * Steps: + * 1. Convert nums[i] to nums[i]^2 + * 2. Sort the squared array + * 3. Select the largest (n + 1) / 2 elements + * 4. Use formula: result = 2 * sum(selected) - totalSum + * + * Time Complexity: O(n log n) + * Space Complexity: O(n) + */ +public class MaxAlternatingSum { + public long maxAlternatingSum(int[] nums) { - int n=nums.length; - long[] a=new long[n]; - for(int i=0;i=n-k;i--){ - sum +=a[i]; + + Arrays.sort(squared); + + int k = (n + 1) / 2; + + long total = 0; + for (long v : squared) { + total += v; } - return 2*sum-total; + + long maxHalf = 0; + for (int i = n - 1; i >= n - k; i--) { + maxHalf += squared[i]; + } + + return 2 * maxHalf - total; } }