zoukankan      html  css  js  c++  java
  • 1726. Tuple with Same Product

    package LeetCode_1726
    
    /**
     * 1726. Tuple with Same Product
     * https://leetcode.com/problems/tuple-with-same-product/
     * 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 valids 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,4,5)
    (4,5,2,10) , (4,5,10,2) , (5,4,2,10) , (5,4,10,2)
    
    Example 3:
    Input: nums = [2,3,4,6,8,12]
    Output: 40
    
    Example 4:
    Input: nums = [2,3,5,7]
    Output: 0
    
    Constraints:
    1. 1 <= nums.length <= 1000
    2. 1 <= nums[i] <= 10^4
    3. All elements in nums are distinct.
     * */
    class Solution {
        /*
        * solution: HashMap, accumulate the number of that every two number have a same product,
        * Time:O(n^2), Space:O(n)
        * */
        fun tupleSameProduct(nums: IntArray): Int {
            val map = HashMap<Int, Int>()
            var count = 0
            for (i in nums.indices) {
                for (j in i + 1 until nums.size) {
                    val product = nums[i] * nums[j]
                    val countOfProduct = map.getOrDefault(product, 0)
                    //accumulate the count if have same product, for example [1,10,2,5]: 1*10 and 2*5
                    count += countOfProduct
                    map.put(product, countOfProduct + 1)
                }
            }
            //each tuple [a,b,c,d] can be arranged in 8 different ways ot matching
            return 8 * count
        }
    }
  • 相关阅读:
    SQL exist
    Mac 加密软件
    appcon 图标打包
    启动页面
    获取第三方的授权
    实现一个简单但是好看的滑动栏
    实现聊天界面的代码
    简单的设置圆形按钮
    自己搭建服务端前透析
    A1056Mice and Rice (25分)
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14292106.html
Copyright © 2011-2022 走看看