在Python中检查长度为m且重复出现K次或更多次的模式是否存在的程序

在Python中检查长度为m且重复出现K次或更多次的模式是否存在的程序

假设我们有一个有正数值的数组nums,我们必须找到一个长度为m的模式,该模式重复出现k次或多于k次。这里的模式是由一个或多个值组成的非重叠子数组(连续的),并且重复出现多次。通过其长度和重复次数来定义模式。我们必须检查是否存在重复出现k次或更多次的长度为m的模式。

因此,如果输入是nums = [3,5,1,4,3,1,4,3,1,4,3,9,6,1],m = 3,k = 2,则输出将为True,因为存在模式[1,4,3]出现了3次。

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

  • 对于i在0到nums大小-1的范围内,做如下操作
    • sub1:从索引i到(i+m*k)-1的nums数组的子数组

    • sub2:从索引i到(i+m-1)的nums数组中的k个连续的子数组

    • 如果sub1与sub2相同,则

      • 返回True
  • 返回False

示例(Python)

让我们看看以下实现,以更好地理解−

def solve(nums, m, k):
   for i in range(len(nums)):
      sub1 = nums[i:i+m*k]
      sub2 = nums[i:i+m]*k
      if sub1 == sub2:
         return True
   return False

nums = [3,5,1,4,3,1,4,3,1,4,3,9,6,1]
m = 3
k = 2
print(solve(nums, m, k))

输入

[3,5,1,4,3,1,4,3,1,4,3,9,6,1], 3, 2

输出

True

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程