import java.util.Scanner;
import java.util.*;
class Main {
public static void main(String[] args) {
final int N = 100010;
Scanner input = new Scanner(System.in);
// code here
int n = input.nextInt();
int[] arr = new int[N];
int[] s = new int[N];
int[] l = new int[2*N];
int[] r = new int[2*N];
int res = 0;
for (int i = 1; i <= n; i++) {
arr[i] = input.nextInt();
if (arr[i] == 0) {
arr[i] = -1;
}
s[i] = s[i-1] + arr[i];
int tmp = s[i] + n;
if (l[tmp] == 0) {
l[tmp] = i;
}
else {
r[tmp] = i;
}
}
for (int i = 1; i <= 2 * n; i++) {
res = Math.max(res, r[i] - l[i]);
}
System.out.println(res);
input.close();
}
}
首先将女生数据处理成-1,就可以利用前缀和公式找到中间男女生数量相同的序列
然后为了优化,使用双指针思想定义l,r两个数组,l[i] 表示前缀和第一次等于s[i]的位置