我正在努力创建一个遍历数组,找到最长条形值并打印该组值的起始索引的方法。任何帮助,将不胜感激。我将专门搜索布尔值数组,并且需要找到最长的“ true”值。谢谢!
答案 0 :(得分:0)
遍历数组并记住您的状态。然后记下一个计数器,记住最长的序列有多长时间。如果您的序列比以前看到的最长,请更新索引。
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);
}
答案 1 :(得分: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;
}