Input: nums =[2,9,15,50], divisors =[5,3,7,2]Output: 2Explanation:
The divisibility score of `divisors[0]`is2 since `nums[2]` and `nums[3]` are
divisible by 5.The divisibility score of `divisors[1]`is2 since `nums[1]` and `nums[2]` are
divisible by 3.The divisibility score of `divisors[2]`is0 since none of the numbers in`nums`is divisible by 7.The divisibility score of `divisors[3]`is2 since `nums[0]` and `nums[3]` are
divisible by 2.As `divisors[0]`,`divisors[1]`, and `divisors[3]` have the same divisibility
score, we return the smaller one which is`divisors[3]`.
Input: nums =[4,7,9,3,9], divisors =[5,2,3]Output: 3Explanation:
The divisibility score of `divisors[0]`is0 since none of numbers in`nums`is divisible by 5.The divisibility score of `divisors[1]`is1 since only `nums[0]`is divisible
by 2.The divisibility score of `divisors[2]`is3 since `nums[2]`,`nums[3]` and
`nums[4]` are divisible by 3.
Input: nums =[20,14,21,10], divisors =[10,16,20]Output: 10Explanation:
The divisibility score of `divisors[0]`is2 since `nums[0]` and `nums[3]` are
divisible by 10.The divisibility score of `divisors[1]`is0 since none of the numbers in`nums`is divisible by 16.The divisibility score of `divisors[2]`is1 since `nums[0]`is divisible by
20.
For each divisor, count how many numbers in nums are divisible by it. Track the divisor with the highest count, and in case of a tie, choose the smallest divisor.
classSolution {
publicintmaxDivScore(int[] nums, int[] divs) {
int mx =-1, ans = 0;
for(int d : divs) {
int cnt = 0;
for(int x : nums) if(x%d==0) ++cnt;
if(cnt > mx || (cnt == mx && d < ans)) {
mx = cnt; ans = d;
}
}
return ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
classSolution {
funmaxDivScore(nums: IntArray, divs: IntArray): Int {
var mx = -1; var ans = 0for (d in divs) {
var cnt = 0for (x in nums) if (x % d ==0) cnt++if (cnt > mx || (cnt == mx && d < ans)) {
mx = cnt; ans = d
}
}
return ans
}
}
1
2
3
4
5
6
7
8
classSolution:
defmaxDivScore(self, nums: list[int], divs: list[int]) -> int:
mx, ans =-1, 0for d in divs:
cnt = sum(x%d==0for x in nums)
if cnt > mx or (cnt == mx and (ans ==0or d < ans)):
mx, ans = cnt, d
return ans
1
2
3
4
5
6
7
8
9
10
11
12
13
impl Solution {
pubfnmax_div_score(nums: Vec<i32>, divs: Vec<i32>) -> i32 {
letmut mx =-1;
letmut ans =0;
for&d in&divs {
let cnt = nums.iter().filter(|&&x| x%d==0).count() asi32;
if cnt > mx || (cnt == mx && d < ans) {
mx = cnt; ans = d;
}
}
ans
}
}