【问题标题】:Space complexity of algo算法的空间复杂度
【发布时间】:2020-04-02 22:49:29
【问题描述】:

这个函数的空间复杂度是N^2,因为输出是一个链表吗?

我正在学校学习空间复杂性,并被困在这个问题上。

def myHealthcare(record):
    l2=[]
    count=0 # num of records generated and the specific time 
    for i in range(record):
        l=[]
        now = datetime.datetime.now()
        ts = now.strftime("%d/%m/%Y %H:%M:%S") # str timestamp 
        ts=ts +' '+str(count)
        l.append(ts)
        l.append(rand.randint(36,39)) #temp
        l.append(rand.randint(55,100)) #hr
        l.append(rand.randint(55,100)) #Pulse
        l.append(rand.randint(120,121)) #bp
        l.append(rand.randint(11,17)) #respiratory rate
        l.append(rand.randint(93,100)) #oxygen sat
        l.append(round(rand.uniform(7.1,7.6),1)) #pH
        l2.append(l)
        count+=1
    return l2

【问题讨论】:

  • 你能更详细地解释一下你的思考过程吗?为什么作为链表意味着它是 O(n^2)?

标签: python python-3.x big-o space-complexity


【解决方案1】:

链表的空间复杂度不是二次的;每个链表节点占用一定数量的辅助内存,所以整个数据结构使用的辅助内存为O(n),其中n是节点数。

但是,您也在构造字符串并将它们存储在内存中。字符串 str(count) 是字符串的一部分,该字符串在每次迭代时都会附加到您的列表 l 中,并且该字符串的长度为 O(log n),因为 count 是一个向上的数字到 n,当表示为字符串时,它有 O(log n) 个数字。所以这个算法的整体空间复杂度是 O(n log n)。

【讨论】:

    猜你喜欢
    • 2021-01-23
    • 2015-05-13
    • 2011-04-20
    • 1970-01-01
    • 2011-11-10
    • 2012-10-12
    • 1970-01-01
    相关资源
    最近更新 更多