DDSA Solutions

Max sum in the configuration

Time: O(n)
Space: O(1)
Advertisement

Intuition

Maximize sum of i*arr[i] over all rotations. Derive from initial sum using formula.

Algorithm

  1. 1Compute initial sum S0. For rotation r+1: Sr+1 = Sr + totalSum - n*arr[n-1-r].
  2. 2Track maximum over all rotations.

Common Pitfalls

  • O(n) by deriving each rotation sum from previous. Initial O(n) setup then O(n) iterations.
Max sum in the configuration.java
Java
// Approach: For rotation by k: sum(k) = sum(k-1) + totalSum - n*arr[n-k]. Use prefix sum to compute efficiently.
// Time: O(n) Space: O(1)
class Solution {
    int maxSum(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++)
            sum += (arr[i] * i);

        for (int i = 1; i < arr.length; i++)
            sum = Math.max(sum, rot(arr, i));

        return sum;
    }

    int rot(int arr[], int idx) {

        int idx2 = arr.length - idx;
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            if (idx2 == arr.length)
                idx2 = 0;

            sum += arr[i] * idx2;
            idx2++;
        }
        
        return sum;

    }
}
Advertisement
Was this solution helpful?