列表

详情


6321. 执行操作后的最大 MEX

给你一个下标从 0 开始的整数数组 nums 和一个整数 value

在一步操作中,你可以对 nums 中的任一元素加上或减去 value

数组的 MEX (minimum excluded) 是指其中数组中缺失的最小非负整数。

返回在执行上述操作 任意次 后,nums 的最大 MEX

 

示例 1:

输入:nums = [1,-10,7,13,6,8], value = 5
输出:4
解释:执行下述操作可以得到这一结果:
- nums[1] 加上 value 两次,nums = [1,0,7,13,6,8]
- nums[2] 减去 value 一次,nums = [1,0,2,13,6,8]
- nums[3] 减去 value 两次,nums = [1,0,2,3,6,8]
nums 的 MEX 是 4 。可以证明 4 是可以取到的最大 MEX 。

示例 2:

输入:nums = [1,-10,7,13,6,8], value = 7
输出:2
解释:执行下述操作可以得到这一结果:
- nums[2] 减去 value 一次,nums = [1,-10,0,13,6,8]
nums 的 MEX 是 2 。可以证明 2 是可以取到的最大 MEX 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int findSmallestInteger(vector<int>& nums, int value) { } };

golang 解法, 执行用时: 168 ms, 内存消耗: 11.9 MB, 提交时间: 2023-03-19 22:08:26

func findSmallestInteger(nums []int, m int) (mex int) {
	cnt := map[int]int{}
	for _, x := range nums {
		cnt[(x%m+m)%m]++
	}
	for cnt[mex%m] > 0 {
		cnt[mex%m]--
		mex++
	}
	return
}

cpp 解法, 执行用时: 224 ms, 内存消耗: 117.8 MB, 提交时间: 2023-03-19 22:08:15

class Solution {
public:
    int findSmallestInteger(vector<int> &nums, int m) {
        unordered_map<int, int> cnt;
        for (int x : nums)
            ++cnt[(x % m + m) % m];
        int mex = 0;
        while (cnt[mex % m]--)
            ++mex;
        return mex;
    }
};

java 解法, 执行用时: 58 ms, 内存消耗: 58.5 MB, 提交时间: 2023-03-19 22:08:04

class Solution {
    public int findSmallestInteger(int[] nums, int m) {
        var cnt = new HashMap<Integer, Integer>();
        for (int x : nums)
            cnt.merge((x % m + m) % m, 1, Integer::sum); // cnt[(x%m+m)%m]++
        int mex = 0;
        while (cnt.merge(mex % m, -1, Integer::sum) >= 0) // cnt[mex%m]-1 >= 0
            ++mex;
        return mex;
    }
}

python3 解法, 执行用时: 260 ms, 内存消耗: 35.4 MB, 提交时间: 2023-03-19 22:07:47

# 同余分组
class Solution:
    def findSmallestInteger(self, nums: List[int], m: int) -> int:
        cnt = Counter(x % m for x in nums)
        mex = 0
        while cnt[mex % m]:
            cnt[mex % m] -= 1
            mex += 1
        return mex

上一题