在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