public static void findMaxProfit(int [] arr){
int min = arr[0];
int max = 0;
int maxDif = arr[1] - arr[0] ;
int[] res = new int[arr.length];
for(int i = 0; i < res.length ; i++)
res[i] = Integer.MIN_VALUE;
int j = -1;
res[++j] = min;
for(int i = 1; i < arr.length; i++){
if(arr[i] > min){
if(arr[i] - min > maxDif){
maxDif = arr[i] - min;
max = arr[i];
if( j % 2 == 1 ){
if(res[j] < max)
res[j] = max;
}else
res[++j] = max;
}
} else{
min = arr[i];
if( j % 2 == 0 ){
if(res[j] > min)
res[j] = min;
} else res[++j] = min;
}
}
// for(int x : res)
// System.out.print(x+",");
int max_value = Integer.MIN_VALUE;
int result = -1;
for(int i = 0; i < res.length;){
if(res[i] == Integer.MIN_VALUE || res[i+1] == Integer.MIN_VALUE )
break;
int dif = res[i+1] - res[i];
if(dif > max_value){
max_value = dif;
result = i;
}
i = i+2;
}
System.out.println("\n"+res[result] + " : "+ res[result+1]);
}
int min = arr[0];
int max = 0;
int maxDif = arr[1] - arr[0] ;
int[] res = new int[arr.length];
for(int i = 0; i < res.length ; i++)
res[i] = Integer.MIN_VALUE;
int j = -1;
res[++j] = min;
for(int i = 1; i < arr.length; i++){
if(arr[i] > min){
if(arr[i] - min > maxDif){
maxDif = arr[i] - min;
max = arr[i];
if( j % 2 == 1 ){
if(res[j] < max)
res[j] = max;
}else
res[++j] = max;
}
} else{
min = arr[i];
if( j % 2 == 0 ){
if(res[j] > min)
res[j] = min;
} else res[++j] = min;
}
}
// for(int x : res)
// System.out.print(x+",");
int max_value = Integer.MIN_VALUE;
int result = -1;
for(int i = 0; i < res.length;){
if(res[i] == Integer.MIN_VALUE || res[i+1] == Integer.MIN_VALUE )
break;
int dif = res[i+1] - res[i];
if(dif > max_value){
max_value = dif;
result = i;
}
i = i+2;
}
System.out.println("\n"+res[result] + " : "+ res[result+1]);
}
No comments:
Post a Comment