网站构建的基本流程,网站顶部广告代码,怎么建设食品网站,徐州建站推广给你两个整数数组 nums1 和 nums2#xff0c;长度分别为 n 和 m。同时给你一个正整数 k。
如果 nums1[i] 可以被 nums2[j] * k 整除#xff0c;则称数对 (i, j) 为 优质数对#xff08;0 i n - 1, 0 j m - 1#xff09;。
返回 优质数对 的总数。
示…给你两个整数数组 nums1 和 nums2长度分别为 n 和 m。同时给你一个正整数 k。
如果 nums1[i] 可以被 nums2[j] * k 整除则称数对 (i, j) 为 优质数对0 i n - 1, 0 j m - 1。
返回 优质数对 的总数。
示例 1 输入nums1 [1,3,4], nums2 [1,3,4], k 1 输出5 解释 5个优质数对分别是 (0, 0), (1, 0), (1, 1), (2, 0), 和 (2, 2)。 示例 2 输入nums1 [1,2,4,12], nums2 [2,4], k 3 输出2 解释 2个优质数对分别是 (3, 0) 和 (3, 1)。 提示 1 n, m 105 1 nums1[i], nums2[j] 106 1 k 103
class Solution {public long numberOfPairs(int[] nums1, int[] nums2, int k) {HashMapInteger,Integer map1 new HashMapInteger,Integer();HashMapInteger,Integer map2 new HashMapInteger,Integer();// 找出最大的除数int max_num 0;// 使用map记录数组中所有数字及其出现的次数for(int num1: nums1){map1.put(num1,map1.getOrDefault(num1,0) 1);if(num1 max_num){max_num num1;}}for(int num2: nums2){map2.put(num2,map2.getOrDefault(num2,0) 1);}long count 0;// 遍历所有被除数for(int num: map2.keySet()){int i num * k;// 找出除数中能与被除数组成优质数对的除数即【被除数*k】的倍数for(int b i; b max_num; b i){// 优质数对的除数与被除数可以任意组合可组成m*n个组合if( map1.containsKey(b)) count 1L * map1.get(b) * map2.get(num);}}return count;}
}