我正在尝试解决给定两个数字的问题,找出它们是否是格雷码序列中的连续数字,即,如果它们是格雷码邻居,则假定未提及格雷码序列。
我在各种论坛上进行搜索,但找不到正确的答案。如果您可以为此提供解决方案,那就太好了。
我对这个问题的尝试-将两个整数转换为二进制,然后分别将两个数字相加,然后找出两个数字的总和之差。如果差异是1,则它们是格雷码邻居。
但是我觉得这不适用于所有情况。非常感谢您的帮助。提前非常感谢!!!
我也必须在面试中解决这个问题。两个值成为格雷码序列的条件之一是它们的值仅相差1位。这是解决此问题的方法:
def isGrayCode(num1, num2): differences = 0 while (num1 > 0 or num2 > 0): if ((num1 & 1) != (num2 & 1)): differences++ num1 >>= 1 num2 >>= 1 return differences == 1