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 - 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
    }
}
题解 3 - 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
题解 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