Python :不使用任何函数的排序列表的最频繁元素(模式)

Python : most frequent element (mode) of sorted list without use any fonction

我逛了很多论坛都没有找到我的解决方案,因为大多数都至少使用了一个前置函数。

我必须return排序列表的统计模式。警告,因为我不能使用任何函数,例如:Max、Count、key、set。

我的函数在 o(n)

我用我自己的功能试试 :

def mode_liste (lis_resultat):
    """lis_resultat: sorted list"""

    d=0
    e=0
    for i in range (len(lis_resultat)-1,1,-1):
        if (lis_resultat[i]==lis_resultat[i-1]):
            e+=1
        else:
            if (d<=e):
                res=lis_resultat[i-1]
                d=e
                e=0
    return res

但是这个函数不适用于少于 2 个项目的列表,我知道这不是好的解决方案

我的解决方案是 lis 作为操作的列表:

counter = 0
my_max = 0
max_index = 0

if len(lis) == 1:
    my_max = 1
    max_index = 0
else:
    for i in range(1,len(lis)):
        if lis[i] == lis[i-1]:
            counter += 1
        else:
            counter = 1
        if counter > my_max:
            my_max = counter
            max_index = i

print(f"occurences: {my_max},mode: {lis[max_index]}")