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


假设我们有一个包含正值的数组 nums,我们需要找到一个长度为 m 的模式,该模式重复出现 k 次或 k 次以上。这里,模式是指一个不重叠的子数组(连续的),它包含一个或多个值,并且重复多次。模式由其长度和重复次数定义。我们需要检查是否存在长度为 m 的模式,该模式重复出现 k 次或更多次。

因此,如果输入类似于 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

更新于: 2021年5月17日

161 次浏览

开启你的 职业生涯

完成课程获得认证

立即开始
广告

© . All rights reserved.