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

C#中找出对象数组中重复最多的产品组及算法优化问题

问题与需求

现有广告数据处理任务,数据源为U16.txt,每条记录包含广告产品、产品组、视频时长、像素分辨率。已完成以下功能:

  • 实现Clip类存储单条广告数据
  • 实现Clips容器类存储全量广告数据,支持表格打印原始数据
  • 实现指定分辨率的广告容器(每组仅保留一条),支持按「时长+产品组」排序并计算总时长

待解决问题:
无法正确提取重复次数最多的产品组(若存在多个并列最高频组,需全部存入单独容器);当前使用的最频繁元素查找算法会重复输出目标组,需优化为仅输出唯一的最高频组。

优化方案:最高频产品组提取

核心逻辑

  1. 统计所有产品组的出现频次,用字典存储(键为产品组,值为出现次数)——天然去重,避免重复计数
  2. 找出频次的最大值
  3. 筛选所有频次等于最大值的产品组,直接存入目标容器(字典键本身唯一,无需额外去重)

代码实现(以Python为例,适配现有类结构)

假设Clips容器类提供get_product_groups()方法返回所有产品组的迭代器:

def extract_top_frequent_groups(clips):
    # 统计频次
    group_freq = {}
    for group in clips.get_product_groups():
        group_freq[group] = group_freq.get(group, 0) + 1
    
    if not group_freq:
        return []  # 空数据处理
    
    # 取最大频次
    max_freq = max(group_freq.values())
    
    # 筛选所有最高频组
    top_groups = [group for group, freq in group_freq.items() if freq == max_freq]
    
    # 存入单独容器(示例用列表,可替换为自定义的Clips子类)
    return top_groups

关键优化点

  • 利用字典键的唯一性,从根源避免重复统计和重复输出
  • 边界处理:空数据场景直接返回空容器,避免max()调用报错
  • 时间复杂度O(n),仅需遍历一次产品组列表,效率最优
验证示例

若产品组频次为:A:3, B:3, C:2,调用方法后返回的容器将仅包含[A, B],无任何重复项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:45:38