Count Triplets

  • + 0 comments

    Cleanest python solution:

    from collections import defaultdict
    def countTriplets(nums, r):
        
        lefts = defaultdict(int)
        pairs = defaultdict(int)
        
        res = 0
        for n in nums:
            res += pairs[n]
                    
            pairs[n*r] += lefts[n]
            
            lefts[n*r] += 1
            
        return res
    

    Can be made more succint using a key transform and one dictionary:

    from collections import defaultdict
    def countTriplets(nums, r):
        lefts, res = defaultdict(int),0
        
        for n in nums:
            res += lefts[-n]
            lefts[-n*r] += lefts[n]
            lefts[n*r] += 1
            
        return res