根据从给定数组中查找所有可能的子数组的实现,如下所示:
public class AllPossibleSubArray {
public static void main(String[] args) {
int[] arr = { 1, 2, 3 };
List<List<Integer>> result = new ArrayList<>();
for (int len = 0; len <= arr.length; len++) {
if (len == 0) {
result.add(new ArrayList<>());
} else {
for (int i = 0; i < arr.length - len + 1; i++) {
List<Integer> temp = new ArrayList<>();
for (int j = i; j < i + len; j++) {
temp.add(arr[j]);
}
result.add(temp);
}
}
}
result.forEach(System.out::println);
}
据我了解,时间复杂度为 O(N^3),因为有三个 FOR 循环。
但是这个问题只不过是一个幂集,即从给定的集合中找到所有可能的子集。从网上的各种论坛,幂集的时间复杂度为 2^N(二项式展开),与 O(N^3) 不同。
我是否缺少一些基本知识?