现在给你一个序列P和一个整数K,询问元素和是K的倍数的子串的最大长度。
比如序列【1,2,3,4,5】,给定的整数K为 5,其中满足条件的子串为{5}、{2,3}、{1,2,3,4}、{1,2,3,4,5},
那么答案就为 5,因为最长的子串为{1,2,3,4,5};如果满足条件的子串不存在,就输出 0。
输入:
第一含一个整数N, 1 ≤ N ≤ 105 。
第二行包含 N 个整数pi ,pi表示序列P第i个元素的值。0 ≤ pi ≤ 105 。
第三行包含一个整数 K, 1 ≤ K≤ 105 。
import java.util.Scanner;
public class Main {
private int getKMaxLength(int[] nums, int[] sums, int k) {
int n = nums.length;
int[] max = new int[k];
int[] min = new int[k];
for (int i = 0; i < k; i++) {
max[i] = -1;
min[i] = n + 1;
}
int mod;
for (int i = 0; i < n + 1; i++) {
mod = sums[i] % k;
//记录整个数组的同余前缀和的最小下标和最大下标
max[mod] = Math.m