python3代码实现,给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空),使得剩余元素的 和 能被 p 整除。 不允许 将整个数组都移除。 请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回 -1 。 子数组 定义为原数组中连续的一组元素。 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/make-sum-divisible-by-p 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
时间: 2023-04-06 07:01:54 浏览: 158
这是一个关于编程的问题,我可以回答。对于这个问题,可以使用前缀和和取模的方法来解决。具体来说,先计算出数组的前缀和,然后对于每个前缀和,计算它除以 p 的余数。如果两个前缀和的余数相同,那么它们之间的子数组的和就是可以被 p 整除的。因此,我们可以使用哈希表来记录每个余数第一次出现的位置,然后遍历一遍数组,对于每个前缀和,查找是否存在一个前缀和的余数与当前前缀和的余数相同,并且它们之间的距离最小。如果存在这样的前缀和,那么我们就找到了一个最短的子数组,可以被移除使得剩余元素的和能被 p 整除。如果不存在这样的前缀和,那么就返回 -1。
阅读全文