Skip to content

Commit 9edf31d

Browse files
author
Tushar Roy
committed
max sum path for two arrays
1 parent 588d8d8 commit 9edf31d

2 files changed

Lines changed: 108 additions & 0 deletions

File tree

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# http://www.geeksforgeeks.org/maximum-sum-path-across-two-arrays/
2+
3+
def max_sum(input1, input2):
4+
max_sum = 0
5+
i = 0
6+
j = 0
7+
sum1 = 0
8+
sum2 = 0
9+
while i < len(input1) and j < len(input2):
10+
if input1[i] == input2[j]:
11+
if sum1 > sum2:
12+
max_sum += sum1 + input1[i]
13+
else:
14+
max_sum += sum2 + input2[j]
15+
i = i + 1
16+
j = j + 1
17+
sum1 = 0
18+
sum2 = 0
19+
elif input1[i] < input2[j]:
20+
sum1 += input1[i]
21+
i = i + 1
22+
else:
23+
sum2 += input2[j]
24+
j = j + 1
25+
26+
while i < len(input1):
27+
sum1 += input1[i]
28+
i = i + 1
29+
30+
while j < len(input2):
31+
sum2 += input2[j]
32+
j = j + 1
33+
34+
if sum1 > sum2:
35+
max_sum += sum1
36+
else:
37+
max_sum += sum2
38+
39+
return max_sum
40+
41+
if __name__ == '__main__':
42+
input1 = [2, 3, 7, 10, 12, 15, 30, 34]
43+
input2 = [1, 5, 7, 8, 10, 15, 16, 19]
44+
45+
print(max_sum(input1, input2))
46+
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package com.interview.array;
2+
3+
/**
4+
* Date 12/31/2015
5+
* @author Tushar Roy
6+
*
7+
* Given two sorted arrays such the arrays may have some common elements. Find the sum of the maximum sum
8+
* path to reach from beginning of any array to end of any of the two arrays. We can switch from one array
9+
* to another array only at common elements.
10+
*
11+
* Time complexity is O(n + m)
12+
* Space complexity is O(1)
13+
*
14+
* http://www.geeksforgeeks.org/maximum-sum-path-across-two-arrays/
15+
*/
16+
public class MaximumSumPathTwoArrays {
17+
18+
public int maxSum(int input1[], int input2[]) {
19+
int maxSum = 0;
20+
int i = 0, j = 0;
21+
int sum1 = 0;
22+
int sum2 = 0;
23+
while (i < input1.length && j < input2.length) {
24+
if (input1[i] == input2[j]) {
25+
if (sum1 > sum2) {
26+
maxSum += sum1 + input1[i];
27+
} else {
28+
maxSum += sum2 + input2[j];
29+
}
30+
i++;
31+
j++;
32+
sum1 = 0;
33+
sum2 = 0;
34+
} else if (input1[i] < input2[j]) {
35+
sum1 += input1[i++];
36+
} else {
37+
sum2 += input2[j++];
38+
}
39+
}
40+
while(i < input1.length) {
41+
sum1 += input1[i++];
42+
}
43+
while(j < input2.length) {
44+
sum2 += input2[j++];
45+
}
46+
47+
if (sum1 > sum2) {
48+
maxSum += sum1;
49+
} else {
50+
maxSum += sum2;
51+
}
52+
return maxSum;
53+
}
54+
55+
public static void main(String args[]) {
56+
int input1[] = {2, 3, 7, 10, 12, 15, 30, 34};
57+
int input2[] = {1, 5, 7, 8, 10, 15, 16, 19};
58+
59+
MaximumSumPathTwoArrays msp = new MaximumSumPathTwoArrays();
60+
System.out.println(msp.maxSum(input1, input2));
61+
}
62+
}

0 commit comments

Comments
 (0)