2644. 找出可整除性得分最大的整数#
給你兩個下標從 0 開始的整數數組 nums
和 divisors
。
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] 。
提示:
模擬#
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;
}
};