大(O)符号

2024-09-27 07:34:15 发布

您现在位置:Python中文网/ 问答频道 /正文

def largest_34(a:list):

    a.sort()
    m1, m2, m3, m4 = a[3], a[2], a[1], a[0]

    for i in a[4:]:
        if i > m1:
            m4 = m3
            m3 = m2
            m2 = m1
            m1 = i           

    return m3+m4

^{pr2}$

def third_at_least(a:list):
    L2 = []
    a.sort()
    MatchNum = (len(a)//3 + 1)
    Return_Val_in_List = []
    for i in range(len(a)):
        if (i == len(a)-1):
            CountNum = (a[i], a.count(a[i]))
            L2.append(CountNum)     

        elif a[i] != a[i+1] and i != (len(a)-1):
            CountNum = (a[i], a.count(a[i]))
            L2.append(CountNum)

    for j in range(len(L2)):
        if L2[j][1] >= MatchNum:
                Return_Val_in_List.append(L2[j][0])

    if Return_Val_in_List == []:
        return None
    else:
        return Return_Val_in_List

我在学大O符号。我希望得到上面代码的正确答案。所以,对于第一个问题,我认为它是nlog(n),因为它有a.sort(),它是{},for循环是{}。我对这个问题的回答是n+nlog(n)。因为这样的小数字被放弃了,我想说它是nlog(n)

对于问题2,我会说它也是n+log(n)nlog(n)来自a.sort和{}来自For循环)。因此,最终答案与问题1相同。nlog(n)

对于问题3,我会说它是nlog(n)+2nnlog(n)来自a.sort和{}来自For循环)。在

我能接受这个逻辑吗?如果没有,有人能解释一下如何分析这些代码吗?在


Tags: inforlenreturnifvalsortlist

热门问题