当前位置: 首页 > 编程笔记 >

程序查找在Python中达到具有不同奇偶校验值的最小跳转

锺离辰沛
2023-03-14
本文向大家介绍程序查找在Python中达到具有不同奇偶校验值的最小跳转,包括了程序查找在Python中达到具有不同奇偶校验值的最小跳转的使用技巧和注意事项,需要的朋友参考一下

假设,我们获得了一个称为nums的数字列表。如果列表中存在值,则可以从索引i跳转到索引i +数字[i]或从索引i跳转到i −数字[i]。因此,我们必须找到至少要达到另一个具有不同奇偶校验值的跳跃数,以保持输入顺序不变。如果我们无法获得另一个具有不同奇偶校验的数字,则将其设置为-1。

因此,如果输入就像数字= [7、3、4、5、6、9、6、7],那么输出将为[-1、1、2,-1,-1,-1、1 ,-1]。

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个功能bfs()。这需要我

    • (j,d):= q的最左边元素并从q删除最左边的项目

    • 将j添加到看到的

    • 如果(nums [i] + nums [j])mod 2非零,则

    • 对于[j + nums [j],j − nums [j]]中的每个k,

    • 返回d

    • 在q的右端插入(k,d + 1)

    • 如果0 <= k <num的大小并且看不到k,则

    • q:=有一对(i,0)的新双头队列

    • 看过:=一套新的

    • 当q不为空时,执行

    • 返回10 ^ 10

    • 从主要方法中执行以下操作-

    • ans:=一个新列表

    • 对于范围从0到nums的i,执行

      • 看过:=一套新的

      • x:= bfs(i)

      • 当x <10 ^ 10时在ans中附加x,否则附加-1

    • 返回ans

    让我们看下面的实现以更好地理解-

    示例

    from collections import deque
    class Solution:
       def solve(self, nums):
          def bfs(i):
             q = deque([(i, 0)])
             seen = set()
             while q:
                j, d = q.popleft()
                seen.add(j)
                if (nums[i] + nums[j]) % 2:
                   return d
                for k in [j + nums[j], j − nums[j]]:
                   if 0 <= k < len(nums) and k not in seen:
                      q.append((k, d + 1))
             return 10 ** 10
          ans = []
          for i in range(len(nums)):
             seen = set()
             x = bfs(i)
             ans.append(x if x < 10 ** 10 else −1)
          return ans
    ob = Solution()
    print(ob.solve([7, 3, 4, 5, 6, 9, 6, 7]))

    输入值

    numbers = [7, 3, 4, 5, 6, 9, 6, 7]
    输出结果
    [−1, 1, 2, −1, −1, −1, 1, −1]

     类似资料:
    • 我试图理解一个Python解决方案,它似乎使用了动态编程。我能够遵循大部分解决方案,但我正在努力使解决方案真正正规化。 问题陈述如下: 您将获得一个整数数组。从某个起始索引,您可以进行一系列跳转。(第一、第三、第五……)序列中的跳转称为“奇数”编号跳转,以及(第2、第4、第6、…)序列中的跳转称为偶数跳转。 你可以从index跳转到index j(with

    • 本文向大家介绍在SAP HANA中的不同列中查找最小值,包括了在SAP HANA中的不同列中查找最小值的使用技巧和注意事项,需要的朋友参考一下 您需要使用LEAST而不是min,如下所示:  请确保您在“ NULL”列中没有任何值。

    • 本文向大家介绍编写Golang程序以查找数组中具有最小值的元素,包括了编写Golang程序以查找数组中具有最小值的元素的使用技巧和注意事项,需要的朋友参考一下 例子 A1 = [2、4、6、7、8、10、3、6、0、1];最小数量为0; A2 = [12、14、16、17、18、110、13、16、10、11];最小数量为10; 解决这个问题的方法 步骤1:将第0个索引处的数字视为最小值,min_

    • 本文向大家介绍在Python程序中查找素数的不同方法,包括了在Python程序中查找素数的不同方法的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将探索不同的方法来查找给定数字是否有效。让我们开始吧! 方法1 这是查找质数的一般方法。 如果数字小于或等于1,则返回False。 如果数字可被任何数字整除,则该函数将返回False。 循环后,返回True。 示例 输出结果 如果运行上面的代码

    • 问题内容: 我有下表: 如何在每个“班级”中找到最大“分数”的“名称”? 要求的输出: 这是针对MySQL的。 问题答案:

    • 问题内容: 我试图找到具有重复值,但仅基于选定的列数,而不是单个列或整个行的行。例如,如果我的表如下所示: 我的问题是: 查找行的“地址和状态”字段与另一行的“地址和状态”字段匹配的行的所有ID。 该查询的答案将是: 有任何想法吗? 意见建议: 如何从单个表中选择同一行中的多列值 问题答案: 请尝试以下方法: