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

如何在有序数组中不用map/hashtable,仅用索引判断元素出现次数是否一致?Python实现

有序数组元素出现次数一致性检查(无哈希表实现)

给定有序数组,要求不使用哈希表/字典,仅通过索引遍历验证数组中所有不同数字的出现次数是否完全一致。

示例

  • 输入 [1,1,1,2,2,3,3,4,5,5] → 返回 False(1出现3次,2、3、5出现2次,4出现1次,次数不统一)
  • 输入 [1,1,3,3,6,6] → 返回 True(所有元素均出现2次)

你提供的实现逻辑可行,但可以简化冗余逻辑、减少变量,以下是更简洁的Python实现:

def has_same_occurrence(deck):
    if not deck:
        return True  # 空数组默认符合条件,可根据实际需求调整
    
    # 确定第一个元素的出现次数作为基准
    base_count = 1
    while base_count < len(deck) and deck[base_count] == deck[0]:
        base_count += 1
    
    # 遍历后续元素,检查每个元素的出现次数是否匹配基准
    i = base_count
    while i < len(deck):
        current_num = deck[i]
        current_count = 0
        # 统计当前元素的连续出现次数
        while i < len(deck) and deck[i] == current_num:
            current_count += 1
            i += 1
        if current_count != base_count:
            return False
    return True

实现思路

  1. 先处理空数组的边界场景(可根据业务需求修改返回值)
  2. 先统计第一个元素的连续出现次数,作为所有元素必须满足的基准次数
  3. 遍历数组,逐个统计后续每个不同元素的连续出现次数,一旦发现次数与基准不符,直接返回False
  4. 遍历完成后所有元素次数均符合要求,返回True

优化点说明

  • 移除了原代码中冗余的preNum、preCount等变量,逻辑更直观易懂
  • 用嵌套循环直接统计连续元素的出现次数,避免了循环内的多分支判断
  • 边界情况处理更清晰明确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:35:28