数组与其旋转序列最大Hamming Distance的O(n)实现正确性咨询
你的实现并不正确,无法覆盖所有场景
你的代码核心逻辑是返回数组去重后的元素总数,该数值和数组与其旋转序列的最大汉明距离没有必然的等价关系,存在大量反例可以推翻该逻辑:
反例1
- 测试数组:
[1,2,1,3],长度n=4 - 你的代码返回值:去重后元素总数为3
- 实际最大汉明距离:将数组左旋转1位得到序列
[2,1,3,1],和原数组逐位对比所有位置元素均不相同,汉明距离为4,远大于你的代码返回值。
反例2
- 测试数组:
[1,1,2,2,3,3],长度n=6 - 你的代码返回值:去重后元素总数为3
- 实际最大汉明距离:将数组左旋转3位得到序列
[2,3,3,1,1,2],和原数组逐位对比所有位置元素均不相同,汉明距离为6,是你代码返回值的2倍。
逻辑错误根源
你错误地将数组去重后的元素数量等价为最大可达到的汉明距离。实际上汉明距离只要求对应位置的元素不同,只要旋转后的序列能满足每个位置的值都和原序列对应位置不一致,哪怕数组的不同元素总数极少,也能达到等于数组长度的最大汉明距离,和元素去重后的总数没有直接关联。
内容的提问来源于stack exchange,提问作者TTiM3R
相关产品推荐
相关产品推荐

