如何创建一种方法,该方法在Java中的布尔值数组中查找最长连续运行的起始INDEX?

时间:2018-12-09 19:10:44

标签: java arrays search

我正在努力创建一个遍历数组,找到最长条形值并打印该组值的起始索引的方法。任何帮助,将不胜感激。我将专门搜索布尔值数组,并且需要找到最长的“ true”值。谢谢!

2 个答案:

答案 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;
}