srammer
BAN USERpublic class MinMaxSum {
public int[] calculateMinMaxSum(int numOne, int numTwo) {
int[] result = new int[2];
result[0] = calculateMinMaxSumValues(numOne, 6, 5) + calculateMinMaxSumValues(numTwo, 6, 5);
result[1] = calculateMinMaxSumValues(numOne, 5, 6) + calculateMinMaxSumValues(numTwo, 5, 6);
return result;
}
private int calculateMinMaxSumValues(int number, int compare, int replace) {
int result = 0;
int multiply = 1;
while(number % 10 > 0) {
int reminder = number % 10;
if(reminder == compare) {
result = result + replace * multiply;
} else {
result = result + reminder * multiply;
}
multiply *= 10;
number = number / 10;
}
return result;
}
}
I think, I have quickest algorithm with only one Loop,
{
private int[] findShortestArray(int[] array) {
int least = 0;
int highest = 0;
int cBegin = -1;
int cEnd = 0;
for(int i=1; i < array.length; i++) {
if(array[i-1] > array[i] || (array[least] >= array[i] && array[highest] <= array[i])) {
if(cBegin < 0) {
cBegin = i-1;
}
cEnd = i;
}
if(array[least] > array[i]) {
cBegin = least < cBegin ? least : cBegin;
least = i;
}
if(array[highest] < array[i]) {
highest = i;
}
}
return Arrays.copyOfRange(array, cBegin, cEnd+1);
}
}
- srammer September 20, 2014
- srammer January 15, 2017