We assume we have unlimited number of coins and bills. My code works fine but the method optimalChange()
has a Cyclomatic Complexity of 8.
import java.util.*;
import java.math.*;
class Change {
long coin2 = 0;
long bill5 = 0;
long bill10 = 0;
}
class Solution {
static Change optimalChange(long s) {
long change = s;
Change c = new Change();
if (change >=10) {
if (change % 2 != 0 && change % 5 !=0) {
return dealWithChangeLike31Euros(change);
}
else {
c.bill10 = (long) change / 10;
change = change % c.bill10;
}
}
if (change <10 && change >=5) {
if (change % 2 == 0) {
c.bill5 = 0;
c.coin2 = change/2;
}
else {
change = change - 5;
c.bill5 = 1;
}
}
else if (change %2 ==0) {
c.bill5 = 0;
c.coin2 = change/2;
} else {
return null;
}
return c;
}
static Change dealWithChangeLike31Euros(long s) {
Change c = new Change();
c.bill10 = ((long) s / 10) - 1;
long change = (long) s % (c.bill10 * 10);
if (change > 5) {
change = change - 5;
c.bill5 = 1;
}
if (change % 2 == 0) {
c.coin2 = change / 2;
}
else {
return null;
}
return c;
}
}
Can the implementation of the dealWithChangeLike31Euros()
method be merged into the other method?