跳到主要内容

2644.找出可整除性得分最大的整数

链接:2644.找出可整除性得分最大的整数
难度:Easy
标签:数组
简介:给你两个下标从 0 开始的整数数组 nums 和 divisors 。divisors[i] 的 可整除性得分 等于满足 nums[j] 能被 divisors[i] 整除的下标 j 的数量。返回 可整除性得分 最大的整数 divisors[i] 。如果有多个整数具有最大得分,则返回数值最小的一个。

题解 1 - cpp

  • 编辑时间:2023-04-16
  • 执行用时:240ms
  • 内存消耗:28.6MB
  • 编程语言:cpp
  • 解法介绍:遍历。
class Solution {
public:
int maxDivScore(vector<int>& nums, vector<int>& divisors) {
int res = 0x7fffffff, resCnt = 0;
for (auto &v : divisors) {
int cnt = 0;
for (auto &num : nums) {
if (num % v == 0) cnt++;
}
if (resCnt < cnt || resCnt == cnt && res > v) {
res = v;
resCnt = cnt;
}
}
return res;
}
};

题解 2 - python

  • 编辑时间:2023-04-16
  • 执行用时:2868ms
  • 内存消耗:15.2MB
  • 编程语言:python
  • 解法介绍:同上。
class Solution:
def maxDivScore(self, nums: List[int], divisors: List[int]) -> int:
res = 0x7fffffff
resCnt = 0
for v in divisors:
cnt = 0
for num in nums:
if num % v == 0:
cnt += 1
if resCnt < cnt or resCnt == cnt and res > v:
res = v
resCnt = cnt
return res

题解 3 - rust

  • 编辑时间:2023-04-16
  • 执行用时:172ms
  • 内存消耗:2.2MB
  • 编程语言:rust
  • 解法介绍:同上。
impl Solution {
pub fn max_div_score(nums: Vec<i32>, divisors: Vec<i32>) -> i32 {
let mut res = i32::MAX;
let mut resCnt = 0;
for v in divisors {
let mut cnt = 0;
for num in nums.iter() {
if *num % v == 0 {
cnt += 1;
}
}
if resCnt < cnt || resCnt == cnt && res > v {
res = v;
resCnt = cnt;
}
}
res
}
}

题解 4 - python

  • 编辑时间:2024-05-18
  • 执行用时:4015ms
  • 内存消耗:16.7MB
  • 编程语言:python
  • 解法介绍:遍历。
class Solution:
def maxDivScore(self, nums: List[int], divisors: List[int]) -> int:
res = 0
res_num = divisors[0]
arr = [sum(num % divisor == 0 for num in nums) for divisor in divisors]
for i in range(len(divisors)):
if arr[i] >= res:
if arr[i] > res or arr[i] == res and divisors[i] < res_num:
res_num = divisors[i]
res = arr[i]
return res_num