当前位置: 首页 > 面试题库 >

如何查找两个数字是否为格雷码序列中的连续数字

尉迟景福
2023-03-14
问题内容

我正在尝试解决给定两个数字的问题,找出它们是否是格雷码序列中的连续数字,即,如果它们是格雷码邻居,则假定未提及格雷码序列。

我在各种论坛上进行搜索,但找不到正确的答案。如果您可以为此提供解决方案,那就太好了。

我对这个问题的尝试-将两个整数转换为二进制,然后分别将两个数字相加,然后找出两个数字的总和之差。如果差异是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


 类似资料:
  • 问题内容: 我正在尝试编写一种方法,该方法将计算两个数字是否是赋值的相对质数。我主要是在寻找从哪里开始的答案。我知道有一种方法可以为我做很多事情,但是赋值几乎使我无需使用gcd或数组就可以做到。 我有点开始了,因为我知道我将不得不在for循环中使用运算符。 显然,此方法仅将返回,或者因为该函数仅将根据这两个数字是否相对质数来打印特定行。 我想我可能不得不写两个循环,无论是和,可能还有一些类型的语句

  • 问题内容: 对于这个例子说,我有两个字段的表,和。 该表具有以下数据 我想回来 我想返回的结果是每个区域递增连续值的最长长度。对于。 我将如何在MS Sql 2005上执行此操作? 问题答案: 一种方法是使用遍历每一行的递归CTE。如果该行符合条件(增加同一区域的订单号),则将链长增加一。如果没有,则启动一个新链: SQL Fiddle的实时示例。 另一种方法是使用查询查找“中断”,即以相同区域的

  • 本文向大家介绍PHP程序查找给定数字序列中是否存在数字,包括了PHP程序查找给定数字序列中是否存在数字的使用技巧和注意事项,需要的朋友参考一下 要查找给定的数字序列中是否存在数字,代码如下- 示例 输出结果 名为“ contains_in_sequence”的函数检查两个值是否相同,如果相等,则该函数返回true。如果两个值之间的差乘以第三个值大于0,并且两个值之间的差除以第三个值,则提示为0,则

  • 这:\d{6}将匹配第一个6,但它也将从abc12345678获得第一个6,我需要忽略这一点。

  • 本文向大家介绍查找两个数字的GCD,包括了查找两个数字的GCD的使用技巧和注意事项,需要的朋友参考一下 在数学中,最大公约数(GCD)是最大可能的整数,该整数将两个整数相除。条件是数字必须为非零。 我们将遵循欧几里得算法来找到两个数字的GCD。 输入输出 算法 输入:两个数字a和b。 输出: a和b的GCD。 示例 输出结果

  • 本文向大家介绍查找两个数字的LCM,包括了查找两个数字的LCM的使用技巧和注意事项,需要的朋友参考一下 在数学中,最小公倍数(LCM)是可能的最小整数,可以被两个数整除。 LCM可以通过许多方法来计算,例如因式分解等。但是在此算法中,我们将较大的数字乘以1,2,3…。直到找到一个可被第二个数字整除的数字。 输入输出 算法 输入:两个数字a和b,视为a> b。 输出:  a和b的LCM。 示例 输出