在Python中找到具有相同连续差异的数字的程序

在Python中找到具有相同连续差异的数字的程序

假设我们必须找到一个大小为N的数组,使每两个相邻数字的绝对差为K。答案中的每个数字都不得有前导零,除了数字0本身。

因此,如果输入为N = 4 K = 7,则输出将为[1818、2929、7070、8181、9292],其中0707无效,因为它具有前导0。

为了解决这个问题,我们将按照以下步骤进行−

  • 如果N与1相同,则
    • 从范围0到9返回一个新列表
  • queue :=使用1到9之间的所有元素创建一个队列

  • 对于n在范围0到N-2中进行,执行

    • len_queue := queue的大小

    • 对于j在范围0到len_queue-1中进行,执行

      • num :=队列的左侧项目,并从队列中删除它

      • lsd := num mod 10

      • 如果lsd-K >=0,则

      • 在队列的末尾插入num * 10 + lsd – K

      • 如果K且lsd + K <= 9,则

      • 在队列的末尾插入num * 10 + lsd + K

  • 返回队列的元素

示例

让我们看下面的实现以获得更好的理解−

from collections import deque
def solve(N, K):
   if N == 1:
      return list(range(10))
   queue = deque(list(range(1, 10)))
   for n in range(N - 1):
      len_queue = len(queue)
      for j in range(len_queue):
         num = queue.popleft()
         lsd = num % 10
         if lsd - K >= 0:
            queue.append( num * 10 + lsd - K )
         if K and lsd + K <= 9:
            queue.append( num * 10 + lsd + K )
   return list(queue)

N = 4
K = 7
print(solve(N, K))

输入

4, 7

输出

[1818, 2929, 7070, 8181, 9292]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程