#include <bits/stdc++.h>
using namespace std;
const int N=5e5+10;
int n,arr[N],a,b;
bool check(){
for(int i=2;i<n-1;i++)
if(arr[i]==arr[1]&&arr[i+1]==arr[n]) return 1;
return 0;
}
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>arr[i];
if(arr[i]) a++;
else b++;
}
if(arr[1]==arr[n]&&n!=1){cout<<"1\n";return 0;}
if(!check()){cout<<"-1\n";return 0;}
cout<<2;
return 0;
}
因为数组元素的取值范围只有0或者1,所以可以考虑到最多只有2次即可取完。
需注意特例 n=1 。
若 数组元素的取值范围不止01,请看这题

京公网安备 11010502036488号