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 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)