首页 > 解决方案 > 检查数组中大小为 x 的相等连续元素的更好方法?

问题描述

public static void main(String[] args) {

        int[] a = { 0, 0, 1, 1, 1, 1, 1, 0, 0 };

        int[] b = { 0, 0, 1, 0, 1, 1, 1, 0, 0 };

        System.out.println(consecutiveEqualofSize(a, 5));
        System.out.println(consecutiveEqualofSize(b, 5));
        System.out.println(consecutiveEqualofSize(b, 3));
    }

    public static boolean consecutiveEqualofSize(int[] a, int size) {
        int count = 0;
        boolean flag = false;
        for (int i = 0; i < a.length; i++) {
            if (flag) {
                break;
            }
            if (a[i] == 1) {
                for (int j = i; j < i + size; j++) {
                    if (j == a.length - 1)
                        break;
                    if (a[j] == 1) {
                        count++;
                    } else {
                        count = 0;
                        break;
                    }
                    if (count == size)
                        flag = true;
                }
            }
        }
        return flag;
    }

main 方法中的代码打印“True, False, True”。我是编程领域的新学生,想要一些提示

标签: javaarraysmethodsinteger

解决方案


从第二个元素开始你的循环。您只需要比较当前元素和前一个元素即可计算重复项。如果您立即获得所需的计数返回。就像是

public static boolean consecutiveEqualofSize(int[] a, int size) {
    int count = 0;
    for (int i = 1; i < a.length; i++) {
        if (a[i] == a[i - 1]) {
            count++;
            if (count >= size - 1) {
                return true;
            }
        } else {
            count = 0;
        }
    }
    return false;
}

推荐阅读