Problem : Given a list of Integers,Find the tuple of 3 adjacent elements in this list that adds up to the maximum sum.
Reference : http://www.careercup.com/question?id=3373955
Solution : complexity O(n)
Program:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package careercup.google;
/**
*
* @author Harit
*/
public class AdjacentSum {
//private static int[] input = new int[]{1,0,2,3,0,1,2,3};
private static int[] input = new int[]{5,6,9,2,8,7,6};
private static int start_index = -1;
private static final int ADJACENT = 3;
public static void main(String args[]){
int sum = 0;
int max_sum = 0;
for(int i=0; i<(input.length-ADJACENT + 1); i++){
if(i == 0){
sum = input[i] + input[i+1] + input[i+2];
max_sum = sum;
start_index = i;
}else{
sum = (sum - input[i-1] + input[i+2]);
if(sum > max_sum){
max_sum = sum;
start_index = i;
}
}
System.out.println("i : " + i + ", sum : " + sum);
}
System.out.println("sum : " + sum + ", index : " + start_index);
}
}
Output:
run:
i : 0, sum : 20
i : 1, sum : 17
i : 2, sum : 19
i : 3, sum : 17
i : 4, sum : 21
sum : 21, index : 4
BUILD SUCCESSFUL (total time: 0 seconds)
