Number of Unequal Triplets in Array
EasyArrayHash TableSorting
Solution
class Counter {
private readonly map: Map<number, number>;
constructor() {
this.map = new Map();
}
get(num: number) {
return this.map.get(num) ?? 0;
}
add(num: number) {
return this.map.set(num, this.get(num) + 1);
}
sub(num: number) {
return this.map.set(num, this.get(num) - 1);
}
}
export function unequalTriplets(nums: number[]): number {
const counter = new Counter();
let pairs = 0;
let triplets = 0;
nums.forEach((num, i) => {
const count = counter.get(num);
triplets += pairs - count * (i - count);
pairs += i - count;
counter.add(num);
});
return triplets;
}