java - java中如何查找数组的子数组

标签 java

这是我编写的一个程序,用于打印给定数组的所有可能的子数组,但是逻辑上存在一些问题,并且打印了错误的输出。

有什么算法可以实现这个吗?

public class SubArray {
static int[][] subArrs;
static int count = 0;

public static void main(String[] args) {
    int[] arr = { 1, 2, 3 };
    int N = 8;

    subArrs = new int[N][];
    subArrs[0] = new int[10];

    for (int i = 0; i < arr.length; i++) {
        subArrs[i] = new int[1];
        subArrs[i][0] = arr[i];
    }

    count = arr.length;
    for (int i = 0; i < arr.length; i++) {
        sub(arr, i, i);
    }

    for (int i = 0; i < subArrs.length; i++) {
        System.out.print("[ ");
        for (int j = 0; j < subArrs[i].length; j++) {
            System.out.print("  " + subArrs[i][j]);
        }
        System.out.println(" ]");
    }
}

这是一种计算具有超过 1 个元素的子数组的方法。

static void sub(int arr[], int i, int index) {
    for (int j = i + 1; j < arr.length; j++) {

        while (index <= j) {
            subArrs[count] = new int[j + 1];
            subArrs[count][0] = arr[i];

            for (int k = 1; k < (j + 1); k++) {
                subArrs[count][k] = arr[k];
            }
            count++;
            index++;
        }
    }

}
}

我得到的输出

[   1 ]
[   2 ]
[   3 ]
[   1  2 ]
[   1  2 ]
[   1  2  3 ]
[   2  2  3 ]
[   2  2  3 ]

期望的输出

[   1 ]
[   2 ]
[   3 ]
[   1  2 ]
[   1  3 ]
[   2  3 ]
[   1  2  3 ]

最佳答案

试试这个代码:

for (int i = 0; i < yourArray.length; i++)
    {
        // j is the number of elements which should be printed
        for (int j = i; j < yourArray.length; j++)
        {
            // print the array from i to j
            for (int k = i; k <= j; k++)
            {
                System.out.print(yourArray[k]);
            }
            System.out.println();
        }
    }

关于java - java中如何查找数组的子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44534906/

相关文章:

java - 通过 java.text.DecimalFormat 格式化数字总是在 SSJS 中返回错误

java - 如何在java中进行AES解密

java - 命令提示符无法找到或运行我的 Java 文件

java - wsimport -clientjar 在(默认包)中生成类

java - Hibernate 中 NamedParameterJDBCtemplate rowmapper 的替代方案

java - 将列写入文本文件

java - 部署在 Tomcat 上的 WAR 文件不读取 application.properties 文件

java - 我将如何改变这个嵌套循环?

java - 从 Java 程序运行 SQL 文件脚本

java - 获取系统设置的当前值并根据需要更改值