给你一个整数数组 nums 和一个整数 k。
如果一个子数组的和能够被 k 整除,或者在 将该子数组中的一个元素取反 后能使和被 k 整除,则称该子数组是 有效的 。
将一个元素取反意味着将其值 x 替换为 -x。
返回 最长有效子数组的长度 。如果不存在有效的子数组,则返回 0。
子数组 是数组中一个连续且非空的元素序列。
示例 1:
输入: nums = [4,1,2], k = 3
输出: 3
解释:
7 % 3 = 1,因此它不能被 k = 3 整除。nums[2] = 2 取反,其和变为 4 + 1 − 2 = 3,能够被 k 整除。示例 2:
输入: nums = [5,3,4], k = 7
输出: 2
解释:
[3, 4] 的和为 7,无需任何取反操作即可被 k = 7 整除。示例 3:
输入: nums = [2,2,5], k = 6
输出: 2
解释:
[2, 2] 的和为 4。将其中任意一个元素取反会使其变为 [-2, 2] 或 [2, -2],这两者的和皆为 0。
提示:
1 <= nums.length <= 1000-105 <= nums[i] <= 1051 <= k <= 105