千家信息网

leetcode如何实现重复至少K次且长度为M的模式

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关leetcode如何实现重复至少K次且长度为M的模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。给你一个正整数数组 arr,请你找出一
千家信息网最后更新 2026年11月03日leetcode如何实现重复至少K次且长度为M的模式

这篇文章将为大家详细讲解有关leetcode如何实现重复至少K次且长度为M的模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

给你一个正整数数组 arr,请你找出一个长度为 m 且在数组中至少重复 k 次的模式。

模式 是由一个或多个值组成的子数组(连续的子序列),连续 重复多次但 不重叠 。模式由其长度和重复次数定义。

如果数组中存在至少重复 k 次且长度为 m 的模式,则返回 true ,否则返回 false 。

示例 1:

输入:arr = [1,2,4,4,4,4], m = 1, k = 3

输出:true

解释:模式 (4) 的长度为 1 ,且连续重复 4 次。注意,模式可以重复 k 次或更多次,但不能少于 k 次。

示例 2:

输入:arr = [1,2,1,2,1,1,1,3], m = 2, k = 2

输出:true

解释:模式 (1,2) 长度为 2 ,且连续重复 2 次。另一个符合题意的模式是 (2,1) ,同样重复 2 次。

示例 3:

输入:arr = [1,2,1,2,1,3], m = 2, k = 3

输出:false

解释:模式 (1,2) 长度为 2 ,但是只连续重复 2 次。不存在长度为 2 且至少重复 3 次的模式。

示例 4:

输入:arr = [1,2,3,1,2], m = 2, k = 2

输出:false

解释:模式 (1,2) 出现 2 次但并不连续,所以不能算作连续重复 2 次。

示例 5:

输入:arr = [2,2,2,2], m = 2, k = 3

输出:false

解释:长度为 2 的模式只有 (2,2) ,但是只连续重复 2 次。注意,不能计算重叠的重复次数。

提示:

2 <= arr.length <= 100

1 <= arr[i] <= 100

1 <= m <= 100

2 <= k <= 100

解题思路

1,因为是连续重复问题比较简单,从第一个位置开始查找,然后步长为m迭代,统计次数,不重复就终止

2,记录次数,看次数是否满足条件

3,如果去掉连续重复条件呢?迭代步长改为1即可,只有重复的时候才会跳转m步

代码实现

func containsPattern(arr []int, m int, k int) bool {     l:=len(arr)    if l<1{        return m==0&&k==0    }        for i:=0;i        count:=1        for j:=i+m;j            if same(arr,i,j,m){                count++            }else{                break            }        }        if count>=k{            return true        }    }    return false}

func same(arr []int ,i,j,m int)bool{ for k:=0;k if arr[i+k]!=arr[j+k]{ return false } } return true}
func containsPattern(arr []int, m int, k int) bool {    l:=len(arr)    if l<1{        return m==0&&k==0    }        ma:=make([]int,l-m)    for i:=0;i        for j:=i+m;j            if same(arr,i,j,m){                ma[i]++                j+=m-1            }            // fmt.Println(i,j)        }        if ma[i]>=k-1{            return true        }    }     fmt.Println(ma)    return false}
func same(arr []int ,i,j,m int)bool{ for k:=0;k if arr[i+k]!=arr[j+k]{ return false } } return true}

关于"leetcode如何实现重复至少K次且长度为M的模式"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

模式 长度 次数 示例 解释 输入 输出 数组 更多 篇文章 只有 条件 步长 迭代 不错 实用 位置 内容 多个 序列 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技股 什么是科技互联网 上海喔噻互联网科技有限公司 科技企业和互联网企业 互联网科技开发公司 有木互联网科技 广州紫鲸互联网科技 深圳期待互联网科技 恒银科技与互联网金融 字节跳动和互联网科技 宁夏众和广鑫互联网科技有限公司 互联网金融中的现代科技 世界互联网科技公司市值排名 花神(南京)互联网科技有限公司 注册互联网科技公司经营范围大全 广州市恰铎互联网科技有限公司 民营互联网公司国防科技 科技大学互联网 梅州GM互联网络科技有限公司 35岁以上互联网科技行业 哈尔滨大商圈互联网科技有限公司 金融科技还是互联网 重庆科技学院互联网 茂名市互联网科技产业园 特约风豹互联网科技为什么扣费 互联网相关科技技术 广东鹅鹅鹅互联网科技有限公司 抖集互联网科技技术咨询 恒生互联网科技趋势 小牛互联网科技有限公司地址
0