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

如何找出Lua表中出现次数最多的产品?

找出Lua表中最受欢迎产品的最优方法

给定一个以订单ID为键、产品名称为值的Lua表,我们不需要知道每个产品的具体销量,只需要找出出现次数最多的产品(也就是最受欢迎的),最优的实现方式如下:

实现思路

核心逻辑是一次遍历完成统计+最大值跟踪,避免额外的二次遍历,时间复杂度为O(n)(n是表中元素的数量),这是理论上的最优复杂度——因为你必须遍历所有元素才能统计出每个产品的出现次数。

代码实现

local products = {
    ["430373bb5b7a40a04f9"] = "red",
    ["0dce4263af4b5cfe0de"] = "red",
    ["cf2559afb736c1eb1bc"] = "green",
    ["abc4d248541c3386c88"] = "blue",
    ["bb9386c65270948ebee"] = "blue",
    ["b193fba741cd646a9c0"] = "blue"
}

local count = {}
local max_count = 0
local most_popular = nil

-- 遍历原表,同时完成统计和最大值跟踪
for _, product in pairs(products) do
    -- 累加当前产品的计数,不存在则初始化为0再加1
    count[product] = (count[product] or 0) + 1
    -- 实时更新当前最受欢迎的产品
    if count[product] > max_count then
        max_count = count[product]
        most_popular = product
    end
end

print("最受欢迎的产品:" .. most_popular) -- 输出 blue

补充说明

  • 如果存在多个产品出现次数相同(比如两个产品都出现3次),上述代码会返回第一个达到最大次数的产品。如果需要收集所有并列最受欢迎的产品,可以在遍历统计完成后,再遍历count表筛选出所有计数等于max_count的产品。
  • 这个方法的空间复杂度是O(k),k是不同产品的数量,在产品种类不多的情况下非常高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:05:48