Skip to content

Commit 2bdd17c

Browse files
author
Tushar Roy
committed
rotation which gives max sum
1 parent 54fe987 commit 2bdd17c

2 files changed

Lines changed: 54 additions & 0 deletions

File tree

python/array/rotationwithmaxsum.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# http://www.geeksforgeeks.org/find-maximum-value-of-sum-iarri-with-only-rotations-on-given-array-allowed/
2+
3+
def max_sum(input):
4+
arr_sum = 0
5+
rotation_sum = 0
6+
for i in range(len(input)):
7+
arr_sum += input[i]
8+
rotation_sum += i*input[i]
9+
10+
max_rotation_sum = rotation_sum
11+
12+
for i in range(1, len(input)):
13+
rotation_sum += len(input)*input[i-1] - arr_sum
14+
max_rotation_sum = max(max_rotation_sum, rotation_sum)
15+
16+
return max_rotation_sum
17+
18+
if __name__ == '__main__':
19+
input = [10, 1, 2, 3, 4, 5, 6, 7, 8, 9]
20+
print(max_sum(input))
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.interview.array;
2+
3+
/**
4+
* Date 12/30/2015
5+
* @author Tushar Roy
6+
*
7+
* Given an input array find which rotation will give max sum of i * arr[i]
8+
*
9+
* http://www.geeksforgeeks.org/find-maximum-value-of-sum-iarri-with-only-rotations-on-given-array-allowed/
10+
*/
11+
public class RotationWithMaxSum {
12+
int maxSum(int input[]) {
13+
int arrSum = 0;
14+
int rotationSum = 0;
15+
for (int i =0; i < input.length; i++) {
16+
arrSum += input[i];
17+
rotationSum += i*input[i];
18+
}
19+
20+
int maxRotationSum = rotationSum;
21+
22+
for (int i = 1; i < input.length; i++) {
23+
rotationSum += input.length*input[i - 1] - arrSum;
24+
maxRotationSum = Math.max(maxRotationSum, rotationSum);
25+
}
26+
return maxRotationSum;
27+
}
28+
29+
public static void main(String args[]) {
30+
int input[] = {10, 1, 2, 3, 4, 5, 6, 7, 8, 9};
31+
RotationWithMaxSum rms = new RotationWithMaxSum();
32+
System.out.print(rms.maxSum(input));
33+
}
34+
}

0 commit comments

Comments
 (0)