public static void main(String[] args) {
boolean[] array = {true,false,false,true,true,true,true};
int ix = 0;
boolean condition = true;
int longest = 0;
int cnt = 0;
for (int i=0;i<array.length;i++){
if (condition!=array[i]){
if (cnt > longest) {
ix = i-cnt;
longest = cnt;
}
condition = array[i];
cnt = 0;
}
cnt++;
}
if (cnt > longest) {
ix = array.length-cnt;
}
System.out.println(ix);
}
0
public static int getLongestStreakIndex(boolean[] arr) {
if (arr == null || arr.length == 0)
return -1;
int res = 0;
for (int i = 1, j = 0, len = 1; i < arr.length; i++) {
if (i == arr.length - 1) {
if (i - j + 1 > len)
res = j;
} else if (arr[i] != arr[i - 1] && i - j > len) {
res = j;
len = i - j;
j = i;
}
}
return res;
}
2 回答
迭代数组并记住你的状态 . 然后保留一个计数器并记住你最长的序列有多长 . 如果您的序列比之前看到的最长的序列更新了索引 .