我想从给定的整数数组中找到所有子数组。我使用HashSet of ArrayList存储所有连续组合。但是这个哈希集并没有正确地存储数组元素,并且遗漏了一些数组元素。此外,哈希集存储重复的数组元素。
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
public class SubArrays {
public static int possibleSubArrays(int[] aray) {
Set<ArrayList<Integer>> uniqueSubArrays= new HashSet<ArrayList<Integer>>();
for (int i = 0; i < aray.length; i++) {
ArrayList<Integer> subArrays = new ArrayList<Integer>();
for (int j = i; j < aray.length; j++) {
subArrays.add(aray[j]);
System.out.println("Creating Sub-Array: " + subArrays);
uniqueSubArrays.add(subArrays);
System.out.println("Entering elements in Set of array: " + uniqueSubArrays);
}
}
System.out.println("Array of sub-arrays:" + uniqueSubArrays);
return uniqueSubArrays.size();
}
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4 };
int size = possibleSubArrays(array);
System.out.println("Size of Unique Sub arrays is: " + size);
}
}
发布于 2021-07-03 02:08:07
这不是我们如何生成数组的sub-arrays
。我们需要三个嵌套循环来生成所有的子数组。前两个循环,用于获取子数组的起始和结束索引。第三种方法将特定子数组的所有元素添加到subArrays
列表中。在每次j
-th迭代结束时,我们需要将这些subArrays
列表添加到uniqueSubArrays
集合中。
for (int i = 0; i < aray.length; i++)
{
for (int j = i; j < aray.length; j++)
{
ArrayList<Integer> subArrays = new ArrayList<Integer>();
for (int k = i; k <= j; k++)
{
subArrays.add(aray[k]);
uniqueSubArrays.add(subArrays);
}
System.out.println(uniqueSubArrays);
}
}
数组:1,2,3,4
子阵列:
[[1], [1, 2, 3], [2], [1, 2], [2, 3], [2, 3, 4], [3], [3, 4], [4], [1, 2, 3, 4]]
https://stackoverflow.com/questions/68234635
复制相似问题