patternjavaMinor
Code to find the proper index comparing 3 values for max one
Viewed 0 times
properthecomparingvaluesonemaxforfindcodeindex
Problem
I have an algorithm and the idea is to move over an array choosing as index the index of the neighboring cell that has the max value.
I.e.
if array[i + 1][j + 1] has the largest value among the 3 then move there.
I have 2 versions of this, but I think it can be cleaner.
version 1:
version 2:
Both versions occur in a
How can these versions become better?
I.e.
if array[i + 1][j + 1] has the largest value among the 3 then move there.
I have 2 versions of this, but I think it can be cleaner.
version 1:
int maxI = i + 1;
int maxJ = j + 1;
if(array[i + 1][j] > array[maxI][maxJ]){
maxI = i + 1;
maxJ = j;
}
if(array[i][j + 1] > array[maxI][maxJ]){
maxI = i;
maxJ = j + 1;
}
i = maxI;
j = maxJ;version 2:
if(LCS[i + 1][j + 1] > LCS[i][j + 1] && LCS[i + 1][j + 1] > LCS[i + 1][j]){
i++;
j++;
}
else{
if(LCS[i][j + 1] > LCS[i + 1][j]){
j++;
}
else{i++;}
}Both versions occur in a
while loop which I omitted for clarity.How can these versions become better?
Solution
I think it's easier to follow the second version. I've extracted out some helper variables:
It seems a little bit readable for me but to be honest I'm not completely satisfied with the result.
final int b = array[i][j + 1];
final int c = array[i + 1][j];
final int d = array[i + 1][j + 1];
if (d > b && d > c) {
i = i + 1;
j = j + 1;
} else if (b > c) {
j = j + 1;
} else {
i = i + 1;
}It seems a little bit readable for me but to be honest I'm not completely satisfied with the result.
Code Snippets
final int b = array[i][j + 1];
final int c = array[i + 1][j];
final int d = array[i + 1][j + 1];
if (d > b && d > c) {
i = i + 1;
j = j + 1;
} else if (b > c) {
j = j + 1;
} else {
i = i + 1;
}Context
StackExchange Code Review Q#20929, answer score: 2
Revisions (0)
No revisions yet.