Program to check pattern of length m repeated K or more times exists or not in Python


Suppose we have an array nums with positive values, we have to find a pattern of length m that is repeated k or more than k times. Here a pattern is a non-overlapping subarray (consecutive) that consists of one or more values and are repeated multiple times. A pattern is defined by its length and number of repetitions. We have to check whether there exists a pattern of length m that is repeated k or more times or not.

So, if the input is like nums = [3,5,1,4,3,1,4,3,1,4,3,9,6,1], m = 3, k = 2, then the output will be True because there is a pattern [1,4,3] which is present 3 times.

To solve this, we will follow these steps −

  • for i in range 0 to size of nums - 1, do

    • sub1 := sub array of nums from index i to (i+m*k) - 1

    • sub2 := k consecutive sub array of nums from index i to (i+m-1)

    • if sub1 is same as sub2, then

      • return True

  • return False

Example (Python)

Let us see the following implementation to get better understanding −

 Live Demo

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))

Input

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

Output

True

Updated on: 17-May-2021

118 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements