给你一个整数数组 nums 和一个整数 k,请返回从 nums 中缺失的 、最小的正整数 k 的倍数。
倍数 指能被 k 整除的任意正整数。
示例 1:
输入: nums = 8,2,3,4,6, k = 2
输出: 10
解释:
当 k = 2 时,其倍数为 2、4、6、8、10、12......,其中在 nums 中缺失的最小倍数是 10。
示例 2:
输入: nums = 1,4,7,10,15, k = 5
输出: 5
解释:
当 k = 5 时,其倍数为 5、10、15、20......,其中在 nums 中缺失的最小倍数是 5。
提示:
1 <= nums.length <= 1001 <= nums[i] <= 1001 <= k <= 100
分析:用一个哈希表记录 nums 里出现的数字,再依次检查 k,2k,3k,······,nk 是否出现过,找到第一个每出现的即可。
cpp
class Solution {
public:
int missingMultiple(vector<int>& nums, int k) {
map<int,int>mp;
for(int i=0,n=nums.size();i<n;++i)
mp[nums[i]]=1;
for(int i=k;;i+=k)
if(mp[i]==0)return i;
return k;
}
};