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

寻找数组中出现次数≥N/3的元素(不使用Moore算法)

找出数组中出现次数≥N/3的元素(不使用Moore投票算法)

方法1:哈希表统计法

这是最直观的解法,通过统计每个元素的出现次数筛选目标元素:

  • 遍历数组,用哈希表记录每个元素的出现次数
  • 遍历哈希表,收集所有出现次数≥len(arr)/3的元素

Python代码示例:

def find_majority_elements(arr):
    count = {}
    n = len(arr)
    threshold = n / 3
    for num in arr:
        count[num] = count.get(num, 0) + 1
    return [num for num, cnt in count.items() if cnt >= threshold]
  • 时间复杂度:O(n),两次线性遍历
  • 空间复杂度:O(n),最坏情况存储所有不同元素

方法2:排序后遍历

排序后相同元素会连续排列,通过遍历统计连续元素的出现次数:

  • 对数组进行原地排序
  • 遍历排序后的数组,维护当前元素的计数,当计数≥n/3时将元素加入结果集(避免重复添加同一元素)

Python代码示例:

def find_majority_elements(arr):
    arr.sort()
    n = len(arr)
    threshold = n / 3
    result = []
    count = 1
    for i in range(1, n):
        if arr[i] == arr[i-1]:
            count += 1
        else:
            if count >= threshold:
                result.append(arr[i-1])
            count = 1
    # 检查最后一组连续元素
    if count >= threshold:
        result.append(arr[-1])
    return list(set(result))
  • 时间复杂度:O(n log n),主要由排序操作决定
  • 空间复杂度:O(1)(忽略排序栈空间,使用原地排序算法)

方法3:分治法

将问题拆解为子问题,合并结果后验证:

  • 将数组分成左右两个子数组,分别找出子数组中符合条件的元素
  • 合并子问题的结果,统计候选元素在整个数组中的出现次数,判断是否满足≥n/3的条件
  • 最终收集所有符合条件的元素

Python代码示例:

def count_element(arr, num):
    return arr.count(num)

def find_majority_recursive(arr, left, right):
    if left == right:
        return [arr[left]]
    mid = (left + right) // 2
    left_maj = find_majority_recursive(arr, left, mid)
    right_maj = find_majority_recursive(arr, mid+1, right)
    # 合并候选元素并去重
    candidates = list(set(left_maj + right_maj))
    n = right - left + 1
    threshold = n / 3
    result = []
    for num in candidates:
        if count_element(arr[left:right+1], num) >= threshold:
            result.append(num)
    return result

def find_majority_elements(arr):
    if not arr:
        return []
    return list(set(find_majority_recursive(arr, 0, len(arr)-1)))
  • 时间复杂度:O(n log n),递归拆分+线性统计
  • 空间复杂度:O(log n),递归调用栈深度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:20:28