首页 文章

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

提问于
浏览
-2

我正在努力创建一个循环遍历数组的方法,找到最长的值条纹,并打印该运行值的起始索引 . 任何帮助,将不胜感激 . 我特意将搜索一组布尔值,我将需要找到最长的“真实”值 . 谢谢!

2 回答

  • 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);
     }
    
  • 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;
    }
    

相关问题