You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

给定数组元素最大频率求解:评估解法的Big O最优性

数组元素最大出现频率解法的时间复杂度分析

需求为找出给定数组中元素的最大出现频率。本人已实现如下解法,但不确定该解法从Big O复杂度的角度来看是否为最优方案:

def solution(A):
    B = [0, 0, 0, 0, 0]
    for i in range (len(A)):
        if A[i] == "Cardiology":
            B[0] += 1
        elif A[i] == "Neurology":
            B[1] += 1
        elif A[i] == "Orthopaedics":
            B[2] += 1
        elif A[i] == "Gynaecology":
            B[3] += 1
        elif A[i] == "Oncology":
            B[4] += 1
    max_patients = max(B)
    return max_patients

你的解法时间复杂度是O(n)(n为数组A的长度),属于线性时间复杂度:遍历数组一次,每个元素的分支判断是O(1)操作,最后求数组最大值是固定的O(5)=O(1)操作,整体没有额外的嵌套循环或高复杂度逻辑。

从Big O复杂度的角度来说,这个解法已经是最优的——因为要统计元素出现频率,必须至少遍历数组一次,不可能存在比O(n)更快的算法(毕竟你得每个元素都看一遍才能统计次数)。

不过你的写法有局限性:只能处理代码里硬编码的5个科室名称,后续如果新增科室,就得修改代码添加新的判断分支和数组位置。可以用字典实现更通用的版本,时间复杂度依然是O(n),扩展性更好:

def solution(A):
    freq = {}
    for dept in A:
        freq[dept] = freq.get(dept, 0) + 1
    return max(freq.values()) if freq else 0

这个版本不管数组里有多少种不同的元素,都能正确统计最大出现频率,效率和你的原解法完全一致,但不需要修改代码适配新元素。

内容的提问来源于stack exchange,提问作者da2ksentine7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:50:45