首页 > 其他 > 详细

LeetCode #1566. Detect Pattern of Length M Repeated K or More Times

时间:2020-12-02 16:22:00      阅读:25      评论:0      收藏:0      [点我收藏+]

题目

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!