周賽341。前一題初始值設錯,這題就記得了。
好像是第一次看到周賽中有兩題Easy?

題目

輸入整數陣列nums和divisors。

divisors[i]的可除性分數定義為索引j的數量,其中nums[j]可被divisors[i]整除。

回傳可除性分數最高的diviros[i]。若有多個分數相同,則選擇最小者。

解法

測資不大,直接暴力計算。

遍歷divisors中每個除數div,看看把nums中多少個數整除。
如果大於之前的次數,或是次數相同但除數更小時更新答案。

時間複雜度O(MN),其中M為nums長度,N為divisors長度。空間複雜度O(1)。

class Solution:
    def maxDivScore(self, nums: List[int], divisors: List[int]) -> int:
        
        def f(div):
            cnt=0
            for n in nums:
                if n%div==0:
                    cnt+=1
            return cnt
        
        ans=0
        mx=-1
        for div in divisors:
            cnt=f(div)
            if cnt>mx or (cnt==mx and div<ans):
                ans=div
                mx=cnt
                
        return ans