gpt4 book ai didi

java - 数组子集问题【最小空间,时间复杂度为O(n)】

转载 作者:行者123 更新时间:2023-12-01 19:42:46 24 4
gpt4 key购买 nike

我想用 java 编写一个函数,它接受 2 个数组作为输入,如果较小的数组是较大数组的子集,则返回 true

有没有一种方法可以使下面的代码简洁并提高空间效率(同时保持 O(n) 时间复杂度?

public boolean isArraySubset(int[] arr1, int arr2[]) {
Set<Integer> set = new HashSet<>();

int largeArr[];
int smallArr[];
if (arr1.length > arr2.length) {
largeArr = arr1;
smallArr = arr2;
} else {
largeArr = arr2;
smallArr = arr1;
}
for (int i : largeArr) {
set.add(i);
}
for (int i : smallArr) {
if (!set.contains(i)) {
return false;
}
}

return true;
}

最佳答案

为什么不使用 Set<T> ?只需使用 removeAll方法并检查较小的尺寸 Set 。这种事情已经为你做好了。

smallerSet.removeAll(largerSet);

if (smallerSet.isEmpty()) {
// It's a subset
}

关于java - 数组子集问题【最小空间,时间复杂度为O(n)】,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54680908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com