如何最快验证成对元素向量是否达成相邻配对的有效状态?
高效验证向量是否满足元素副本两两相邻的方法
核心最优方案(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
相关产品推荐
相关产品推荐

