问题:
给定一个包含大约100万个无符号32位整数的列表,一个无符号32位整数输入值和一个最大汉明距离,返回所有与输入值的汉明距离在指定范围内的列表成员。
数据结构用于保存列表的具体实现不限,性能要求为内存中的解决方案,构建数据结构的成本次要,查询数据结构的低成本至关重要。
示例:
For a maximum Hamming Distance of 1 (values typically will be quite small)
And input:
00001000100000000000000001111101
The values:
01001000100000000000000001111101
00001000100000000010000001111101
should match because there is only 1 position in which the bits are different.
11001000100000000010000001111101
should not match because 3 bit positions are different.
我的思路:
对于汉明距离为0的极端情况,只需使用排序过的列表,并进行二分搜索以查找特定的输入值。
如果汉明距离仅可能为1,则可以翻转原始输入中的每个比特,并重复以上步骤32次。
如何高效地(不需要扫描整个列表)发现具有大于1的汉明距离的列表成员。