【发布时间】:2021-08-15 08:23:56
【问题描述】:
这是本题的算法:写一个函数,以两个数组作为输入,每个数组包含一个A-Z列表;你的程序应该返回 True 如果 第二个数组是第一个数组的子集,否则为 False。
# Python 3 program to find whether an array
def isSubset(arr1, arr2):
i = 0
for i in range(len(arr2)):
if(arr2[i] not in arr1):
return False
return True
arr1 = ["A", "B", "C", "D", "E", "F"]
arr2 = ["C", "A", "A"]
if(isSubset(arr1, arr2)):
print("arr2[] is a subset of arr1[] ")
else:
print("arr2[] is not a subset of arr1[]")
【问题讨论】:
-
嗨,请阅读 How to ask homework question 和 Open letter to students with homework problems 了解如何提出一个好的家庭作业问题。
-
复杂度是
O(n^2)因为arr2[i] not in arr1需要O(n)运行时。 -
我猜它的 O(n²) 因为你在一个循环中有一个循环。
-
我相信您的
arr1和arr2的输出应该是arr2[] is not a subset of arr1[]? -
O(M*N) 其中 M 和 N 是输入的大小。如果您使用可以更快地检查成员资格的不同数据结构,则可以执行 O(max(M, N))。这里,
set将是选择,python 已经为子集关系实现了小于运算符:set(arr2) <= set(arr1)(注意,<=是子集,<是属性子集)
标签: python python-3.x algorithm time-complexity