3512. 使数组和能被 K 整除的最少操作次数
解法
思路和算法
每次操作可以将数组 $\textit{nums}$ 中的一个元素值减少 $1$,因此为了计算使数组元素和能被 $k$ 整除的最少操作次数,需要考虑数组元素和的最小减少量。考虑数组 $\textit{nums}$ 的元素和除以 $k$ 的余数 $r$。
-
如果 $r = 0$,则数组元素和已经能被 $k$ 整除,不需要执行操作。
-
如果 $r > 0$,则至少要将数组元素和减少 $r$ 才能被 $k$ 整除,因此需要执行 $r$ 次操作。
因此,对于 $0 \le r < k$ 的任意余数 $r$,使数组元素和能被 $k$ 整除的最少操作次数是 $r$。
计算数组 $\textit{nums}$ 的元素和除以 $k$ 的余数,即为使数组元素和能被 $k$ 整除的最少操作次数。
代码
###Java
class Solution {
public int minOperations(int[] nums, int k) {
return Arrays.stream(nums).sum() % k;
}
}
###C#
public class Solution {
public int MinOperations(int[] nums, int k) {
return nums.Sum() % k;
}
}
复杂度分析
-
时间复杂度:$O(n)$,其中 $n$ 是数组 $\textit{nums}$ 的长度。需要遍历数组一次计算元素和。
-
空间复杂度:$O(1)$。