如何查找多列表中最频繁出现的数字序列?
找出高频连续数字子序列的解决方案
需求说明
给定多组数字列表(示例如下),需提取所有列表中的连续数字子序列,统计各子序列的出现次数,并输出出现次数最多的子序列及其次数。
示例输入列表:
list1: [10, 1, 2, 55, 14, 6, 11, 25, 125, 200]
list2: [6, 77, 36, 11, 1, 2, 55, 125, 15, 20]
list3: [99, 7, 6, 1, 2, 55, 125, 15, 42,68]
...
listN: [1, 2, 55, 125, 15, 42,68, 9, 87, 16]
实现步骤
- 提取连续子序列:遍历每个输入列表,生成所有长度≥2的连续数字子序列(单个元素无统计意义),例如从列表中截取
[1,2]、[1,2,55]这类连续片段。 - 统计出现次数:使用字典(哈希表)记录每个子序列的出现次数,由于列表无法作为字典键,需将子序列转换为元组(如
(1,2,55))作为键,每遇到一次对应子序列就将计数加1。 - 筛选高频子序列:遍历统计字典,找出计数最高的子序列,转换回列表格式输出。
示例结果
[1, 2, 55] : 4次
内容的提问来源于stack exchange,提问作者DSI
相关产品推荐
相关产品推荐

