LeetCode #1566. Detect Pattern of Length M Repeated K or More Times
阿新 • • 發佈:2020-12-02
題目
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