1566. Detect Pattern of Length M Repeated K or More Times
从头开始遍历arr到len(arr)-m位置为止,每次取m个元素做成元组,然后以m为步长向后找元组,如果不相等就返回,否则将剩余需要匹配的次数减一,最后判断一下剩余次数是否减到0了,如果是说明此次找到了题意匹配的多个模式,返回True,遍历结束还没找到的话返回False。
时间复杂度:O(n^2)
空间复杂度:O(1)
class Solution:
def containsPattern(self, arr: List[int], m: int, k: int) -> bool:
for i in range(len(arr) - m + 1):
pattern = tuple(arr[i:i + m])
remain = k - 1
for j in range(i + m, len(arr) - m + 1, m):
if tuple(arr[j:j + m]) != pattern:
break
else:
remain -= 1
if not remain: break
if not remain:
return True
return False
LeetCode #1566. Detect Pattern of Length M Repeated K or More Times
原文:https://www.cnblogs.com/RatsCommander/p/14073784.html