我正在遇到HackerRank问题,并且我有这个问题:
给出嵌入在约翰的每块岩石中的矿物清单,显示 他的收藏夹中有多少种宝石。例如, 矿物成分字符串的数组是['abc','abc','bc]。的 矿物b和c出现在每个复合物中,因此有2个宝石。
我有一个解决方案,但是我想问一下时间复杂度:
def gemstones(arr):
counter = 0
char_set = set(''.join(arr))
for ch in char_set:
if all(ch in word for word in arr):
counter+=1
return counter
我是否正确地认为时间复杂度为O(n + m),其中n是char_set中的元素数,m是arr中的元素数?
答案 0 :(得分:0)
正确的复杂度是O(N):
def gemstones(arr) :
return len(set(arr))
这将返回正确数量的宝石,而忽略重复的宝石。
您不必为此计算矿物质。
下面是HR问题的链接,针对该问题的解决方案是:
def gemstones(arr):
x = set(arr[0])
for a in arr :
x.intersection_update(set(a))
return len(x)