LeetCode in Kotlin

1726. Tuple with Same Product

Medium

Given an array nums of distinct positive integers, return the number of tuples (a, b, c, d) such that a * b = c * d where a, b, c, and d are elements of nums, and a != b != c != d.

Example 1:

Input: nums = [2,3,4,6]

Output: 8

Explanation: There are 8 valid tuples:

(2,6,3,4) , (2,6,4,3) , (6,2,3,4) , (6,2,4,3)

(3,4,2,6) , (4,3,2,6) , (3,4,6,2) , (4,3,6,2)

Example 2:

Input: nums = [1,2,4,5,10]

Output: 16

Explanation: There are 16 valid tuples:

(1,10,2,5) , (1,10,5,2) , (10,1,2,5) , (10,1,5,2)

(2,5,1,10) , (2,5,10,1) , (5,2,1,10) , (5,2,10,1)

(2,10,4,5) , (2,10,5,4) , (10,2,4,5) , (10,2,5,4)

(4,5,2,10) , (4,5,10,2) , (5,4,2,10) , (5,4,10,2)

Constraints:

Solution

class Solution {
    fun tupleSameProduct(nums: IntArray): Int {
        val ab = HashMap<Int, Int>()
        for (i in nums.indices) {
            for (j in i + 1 until nums.size) {
                ab[nums[i] * nums[j]] = ab.getOrDefault(nums[i] * nums[j], 0) + 1
            }
        }
        var count = 0
        for (entry: Map.Entry<Int, Int> in ab.entries) {
            val `val`: Int = entry.value
            count += `val` * (`val` - 1) / 2
        }
        return count * 8
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy