簡體   English   中英

如何計算此代碼的時間復雜度?

[英]How can I calculate the time complexity of this code?

我正在經歷 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 中的元素數?

正確的復雜度是 O(N):

def gemstones(arr) :
    return len(set(arr))

這將返回正確數量的寶石,忽略重復項。

你不必為此計算礦物質。


下面是人力資源問題的鏈接,針對該問題的解決方案是:

def gemstones(arr):
    x = set(arr[0])
    for a in arr :
        x.intersection_update(set(a))
    return len(x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM