banner
cells

cells

为美好的世界献上 code

2644. Find the integer with the highest divisibility score

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

給你兩個下標從 0 開始的整數數組 numsdivisors

divisors[i]可整除性得分 等於滿足 nums[j] 能被 divisors[i] 整除的下標 j 的數量。

返回 可整除性得分 最大的整數 divisors[i] 。如果有多個整數具有最大得分,則返回數值最小的一個。

示例 1:

輸入:nums = [4,7,9,3,9], divisors = [5,2,3]
輸出:3
解釋:divisors 中每個元素的可整除性得分為:
divisors[0] 的可整除性得分為 0 ,因為 nums 中沒有任何數字能被 5 整除。
divisors[1] 的可整除性得分為 1 ,因為 nums[0] 能被 2 整除。 
divisors[2] 的可整除性得分為 3 ,因為 nums[2]、nums[3] 和 nums[4] 都能被 3 整除。 
因此,返回 divisors[2] ,它的可整除性得分最大。

示例 2:

輸入:nums = [20,14,21,10], divisors = [5,7,5]
輸出:5
解釋:divisors 中每個元素的可整除性得分為:
divisors[0] 的可整除性得分為 2 ,因為 nums[0] 和 nums[3] 都能被 5 整除。
divisors[1] 的可整除性得分為 2 ,因為 nums[1] 和 nums[2] 都能被 7 整除。
divisors[2] 的可整除性得分為 2 ,因為 nums[0] 和 nums[3] 都能被5整除。 
由於 divisors[0]、divisors[1] 和 divisors[2] 的可整除性得分都是最大的,因此,我們返回數值最小的一個,即 divisors[2] 。

示例 3:

輸入:nums = [12], divisors = [10,16]
輸出:10
解釋:divisors 中每個元素的可整除性得分為:
divisors[0] 的可整除性得分為 0 ,因為 nums 中沒有任何數字能被 10 整除。
divisors[1] 的可整除性得分為 0 ,因為 nums 中沒有任何數字能被 16 整除。 
由於 divisors[0] 和 divisors[1] 的可整除性得分都是最大的,因此,我們返回數值最小的一個,即 divisors[0] 。

提示:

  • 1<=nums.length,divisors.length<=10001 <= nums.length, divisors.length <= 1000
  • 1<=nums[i],divisors[i]<=1091 <= nums[i], divisors[i] <= 10^9

模擬#

class Solution {
public:
    int maxDivScore(vector<int>& nums, vector<int>& divisors) {
        int res = INT_MAX, cnt = 0;
        for (const auto &divisor : divisors) {
            int cur = 0;
            for (const auto &num : nums) {
                cur += (num % divisor == 0);
            }
            if (cur == cnt) {
                res = min(res, divisor);
            } else if (cur > cnt) {
                res = divisor;
                cnt = cur;
            }
        }
        return res;
    }
};
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。