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

如何最快验证成对元素向量是否达成相邻配对的有效状态?

高效验证向量是否满足元素副本两两相邻的方法

核心最优方案(O(N)时间、O(1)空间)

直接对向量做一次线性遍历,从起始位置开始,每次检查当前索引i和i+1的元素是否相等,然后跳过这一对(步长设为2),直到遍历结束:

  • 遍历过程中只要发现任意一对元素不相等,立即判定为无效状态
  • 遍历完成后所有配对都相等,则判定为有效状态

这种方法的优势在于:

  • 时间复杂度严格为O(N),是理论上的最优下限(必须遍历所有元素才能确认状态)
  • 空间复杂度为O(1),仅需几个遍历变量,完全适配超长向量的扩展性需求,不会因为向量长度增加带来额外内存开销

示例验证

针对你的示例:

  • 有效状态{A,A,J,J,E,E,F,F}:遍历0-1(A=A)、2-3(J=J)、4-5(E=E)、6-7(F=F),全部配对相等,验证通过
  • 原始未排序状态{A,F,J,E,F,A,J,E}:遍历到0-1(A≠F)时直接判定无效

代码实现(Python)

def is_valid_pairing(vec):
    n = len(vec)
    # 额外校验:题目明确长度为偶数,此步可按需保留
    if n % 2 != 0:
        return False
    # 步长为2遍历,检查每一对相邻元素
    for i in range(0, n, 2):
        if vec[i] != vec[i+1]:
            return False
    return True

为什么不需要额外统计元素出现次数?

题目已经明确每个元素恰好出现两次,因此无需用哈希表等结构统计频次——只要确保每个元素的两次出现是相邻的即可,额外统计只会增加不必要的空间开销,完全没必要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:45:37