Given two arrays of integers(for example) X = [1, 1, 1, 7, 7, 7] and Y = [1, 1, 1, 8, 8, 8] to find the number of occurances of the highest appearing fraction where fraction is in the form of X[i]/Y[i] is a problem which we can solve using a HashTable to avoid O(N^2) complexity.
How do I insert entries (key, value) where key may contain multiple values? If I declare a class Fraction then the reference will be hashed and it won't work. The workaround that I used was to represent the fraction as a string X[i] concatanated with Y[i] but I am wondering if there's a better way to do this.
static int maximumOccuringFraction(int[] X, int[] Y) {
HashMap<String, Integer> freq = new HashMap<String, Integer>();
int res = 1;
for(int i = 0; i < Y.length; i++) {
int n = X[i];
int d = Y[i];
String s = String.valueOf(n) + String.valueOf(d);
if(freq.containsKey(s)) {
res = Math.max(res, freq.get(s) + 1);
freq.put(s, freq.get(s) + 1);
}
else {
freq.put(s, 1);
}
}
return res;
}
Thanks in advance.