banner
cells

cells

为美好的世界献上 code

2644. 最大の整数を見つけるための割り切れるスコアを見つける

2644. 可整除性得点が最大の整数を見つける#

0 から始まる 2 つの整数配列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;
    }
};
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。