在 Python 中使 sum 可被 P 整除的程序
假设我们有一个数组nums和另一个值p,我们删除最小的子数组(不是整个数组),使得剩余值的总和可以被p整除。我们必须找到我们需要删除的最小子数组的长度,如果没有这样的子数组,则返回-1。
因此,如果输入类似于nums=[8,2,6,5,3]p=7,那么输出将为1,因为如果我们删除3,则总和将为21,并且可以被7整除。
示例
让我们看看以下实现以获得更好的理解-
def solve(nums, p): ans = float("inf") s = sum(nums) % p d = {0:-1} cum = 0 if s == 0: return 0 for i in range(len(nums)): cum+=nums[i] r = cum%p if (r-s)%p in d: ans = min(ans, i-d[(r-s)%p]) d[r] = i return ans if ans输入
[8,2,6,5,3], 7输出结果1