public class Test2{
public static void main(String [] args){
int [] arr = {1,0,0,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,0,0,0,1,0,1,0,1,0,1,1,1,1,1,1,0,0,1,1,0,1,0,1,1,0};
System.out.println(solution(arr));
}
//找出0,1随机出现的数组中1出现的最大连续次数
//思路:动态规划,state[i]数组表示截止到字符i为止,1连续出现的次数
public static int solution(int [] arr){
int len = arr.length;
int [] state = new int[len];
//初始化状态数组
for(int i = 0; i < len; i++){
if (arr[i] == 1){
state[i] = 1;
}
}
int res = state[0];
//状态更新
for(int j = 1; j < len; j++){
if(arr[j] == 1 && arr[j]==arr[j-1]){
state[j] = state[j-1] + 1;
}
}
//判断状态数组中最大的值
for(int k = 1; k < len; k++){
if(state[k] > res){
res = state[k];
}
}
return res;
}
}