作者:MJ昊
公众号:程序猿的编程之路
今天是 昊 的算法之路第9天,今天分享的是LeetCode第3162题优质数对的总数 I的解题思路。这道题目难度为简单
,
题目描述简要回顾
题目要求给定两个整数数组 nums1
和 nums2
,以及一个整数 k
,找到满足 nums1[i] % (nums2[j] * k) === 0
的数对 (i, j)
的总数。
解题思路
我们需要遍历 nums1
和 nums2
,逐个检查每对数是否满足 nums1[i]
对 nums2[j] * k
的取余为0。每满足一个条件,计数器就加1。
代码实现:
var numberOfPairs = function (nums1, nums2, k) { let count = 0; for (let i = 0; i < nums1.length; i++) { for (let j = 0; j < nums2.length; j++) { if (nums1[i] % (nums2[j] * k) === 0) count++; } } return count; };
复杂度分析
- 时间复杂度:O(n * m),其中
n
是nums1
的长度,m
是nums2
的长度。双重循环遍历nums1
和nums2
,时间复杂度为O(n * m)
。 - 空间复杂度:O(1),我们只使用了常数级别的额外空间用于计数器。
总结
这道题属于基础的双重循环遍历问题,通过简单的逻辑判断找到符合条件的数对。可以在遍历过程中适当优化,减少不必要的计算,提高效率。