LeetCode题目笔记——1566. 重复至少 K 次且长度为 M 的模式

news2024/11/19 6:26:59

文章目录

    • 题目描述
    • 题目难度——简单
    • 方法一:模拟
      • 代码/C++
    • 总结

题目描述

给你一个正整数数组 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

题目链接

题目难度——简单

方法一:模拟

  首先,把m*k记作一个变量pattern,表示题目描述的这个模式的长度,然后与原数组长度进行比较,如果原数组长度小于pattern,说明它不可能有这个模式,返回false,否则再继续判断。
  考虑一下特殊情况,比如当m=1时,题目就变成了判断数组里是否有连续出现k次的某数。我们可以用一个变量len维护当前遍历到的可以形成模式的子数组长度,初始为m,即默认从出现一次开始,从第m个位置开始遍历,每次判断当前位置i与i-m位置上的元素是否相等,相等就把len+1,不相等就重置为m,直到len==pattern时返回true,或者遍历完返回false。

代码/C++

class Solution {
public:
    bool containsPattern(vector<int>& arr, int m, int k) {
        int n = arr.size(), pattern = m * k;
        // 如果数组长度小于m*k,那不可能存在题目所述的模式
        if(n < pattern){   
            return false;
        }
        int len = m, i;
        // 从m开始,判断相同的数目
        for(i = m; i < n; i++){
            if(arr[i] == arr[i - m]){
                len++;
            }
            else{
                len = m;
            }
            if(len == pattern){
                return true;
            }
        }
        return false;
    }
};

在这里插入图片描述

class Solution:
    def containsPattern(self, arr: List[int], m: int, k: int) -> bool:
        n = len(arr)
        pattern = m * k
        if n < pattern:
            return False
        
        length = m
        for i in range(m, n):
            if arr[i] == arr[i - m]:
                length += 1
            else:
                length = m
            
            if length == pattern:
                return True
        
        return False

总结

  只需要一次遍历,所以时间是O(N),只用到了常量变量,所以空间是O(1)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/191751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【面试】vue组件style中scoped的作用是什么?什么是scoped穿透?

vue组件style中scoped的作用是什么&#xff1f; 在Vue文件中的style标签上有一个特殊的属性——scoped。scoped属性是 HTML5 中的新属性&#xff0c;是一个布尔属性&#xff0c;如果使用该属性&#xff0c;则css样式仅仅只能应用到当前的Vue组件&#xff0c;避免组件之间样式相…

EfficientNet v1 v2

EfficientNet v1 增加网络的深度depth能够得到更加丰富、复杂的特征并且能够很好的应用到其它任务中。但网络的深度过深会面临梯度消失&#xff0c;训练困难的问题。增加网络的width能够获得更高细粒度的特征并且也更容易训练&#xff0c;但对于width很大而深度较浅的网络往往很…

Base64编码

介绍 Base64 编码 Base64 是一种使用 64 个可打印字符来表示二进制数据的编码方式。 Base64 中的 64 个可打印字符包括&#xff1a;大小写字母 a - z、阿拉伯数字 0 - 9&#xff0c;这样共有 62 个字符&#xff0c;另外两个可打印字符在不同的系统中而不同。RFC 4648 标准中&…

程序员可以不看书,但不可以不知道这些网站!

程序员可以不看书&#xff0c;但是不能停止学习。如果你不喜欢看书&#xff0c;这些网站可以先收藏下来&#xff01; 花了两天整理出的程序员常看的网站&#xff0c;纯纯干货来了↓↓ 一、学习网站 ①菜鸟教程 这个网站有HTML、CSS、Javascript、PHP、C、Python等各种基础编…

关于python常用软件用法:Pycharm 常用功能

一.Pycharm的基本使用 1.在Pycharm下为你的Python项目配置Python解释器 &#xff08;1&#xff09;.Setting>Project Interpreter>源码资料电子书:点击此处跳转文末名片获取 二.在Pycharm下创建Python文件、Python模块 1.File>New>Python File2.File>New>P…

Mysql高级部分学习笔记(一)——底层及索引

0. 概述 我们的数据库一般都会并发执行多个事务&#xff0c;多个事务可能会并发的对相同的一批数据进行增删改查操作&#xff0c;可能 就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题&#xff0c;为了解决多事务并发问题…

使用windows电脑SSH客户端链接Iphone手机的sshd服务(免越狱)

最近有需求使用电脑导出手机中特定app的文件。 当然可以直接连上数据线将手机中的文件下载下来。 为了能做到代码自动化导出&#xff0c;将手机作为一台电脑使用&#xff0c;将手机中的文件导出来。 关键问题是如何将手机作为电脑使用&#xff0c;这里有几个步骤(我使用的是…

关于接口测试自动化的总结与思考

关于接口测试自动化的总结与思考 目录&#xff1a;导读 什么是服务端? 什么是接口? 什么是接口测试? 为什么要做接口测试? 如何做接口测试&#xff1f; 什么是接口测试自动化? 为什么要做接口测试自动化? 接口测试自动化的规范 文档准备 明确接口测试自动化需…

CRI 与 ShimV2:一种 Kubernetes 集成容器运行时的新思路

作者|张磊 CRI 与 ShimV2&#xff1a;一种 Kubernetes 集成容器运行时的新思路-阿里云开发者社区 Kubernetes 项目目前的重点发展方向&#xff0c;是为开发者和使用者暴露更多的接口和可扩展机制&#xff0c;将更多的用户需求下放到社区来完成。其中&#xff0c;发展最为成熟…

再探前端低代码的“野路子”

之前码过很多低代码的文章&#xff0c;发现大家口中的低代码挺不一样的&#xff0c;这次心血来潮想探探低代码的野路子。 只需要拖拽操作或者几行基础代码&#xff0c;就能完成以往需要程序员才能搭建的各类应用系统&#xff0c;对效率要求较高的企业而言&#xff0c;是不是很有…

命令执行简介、命令执行函数

数据来源 命令执行简介 01 命令执行漏洞产生原因 02 命令执行漏洞的危害 03 远程代码执行 1&#xff09;远程代码执行- eval函数 2&#xff09;远程代码执行 - assert函数 3&#xff09;远程代码执行 - preg_replace函数 使用方法和一句话木马一样 示例&#xff1a; 在ph…

9 多分类问题

文章目录问题引入网络设计改进网络方法softmax层lossMINIST引入代码实现课程内容来源&#xff1a; 链接课程文本借鉴&#xff1a; 链接以及Birandaの突然发现的也挺好&#xff1a;链接 问题引入 前篇中&#xff0c;对糖尿病数据集的问题是一个二分类问题&#xff0c;但实际问…

vue-node解决 rollbackFailedOptional: verb npm-session fd23ceb3f5797b77进度条卡住的问题

一、文章引导 #mermaid-svg-qv5tmCFBaoUwQojc {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qv5tmCFBaoUwQojc .error-icon{fill:#552222;}#mermaid-svg-qv5tmCFBaoUwQojc .error-text{fill:#552222;stroke:#55222…

RabbitMQ常见场景问题

RabbitMQ常见场景问题 文章目录RabbitMQ常见场景问题6种工作模式1.直连模式2.发布订阅模式3.Routing路由模式4.Topic通配符模式5.Header模式6.RPC消息不丢失消息发送到交换机失败1.配置文件开启发布确认2.配置回调函数3.测试4.如何处理失败消息RabbitMQ服务器故障持久化消息发送…

存量房贷利率,一种简单估算其自然年利率调整的方法。

1.摘要2022年过去了&#xff0c;总所周知LPR被多次下调&#xff0c;目前有存量房贷的朋友&#xff0c;如果&#xff08;普遍&#xff09;设置的是根据自然年LPR动态调整利率&#xff0c;到2023年2月应该注意到了比较明显的房贷金额变动。这里主要给出一种根据这个变动&#xff…

Plecs电力电子仿真专业教程-第一季 第一节 Plecs简介

Plecs电力电子仿真专业教程-第一季 第一章 Plecs是什么&#xff1f; 第一节 Plecs简介 Plecs是瑞士Plexim GmbH公司开发的系统级电力电子仿真软件PLECS。PLECS是一个用于电路和控制结合的多功能仿真软件&#xff0c;尤其适用于电力电子和传动系统。不管您是工业领域中的开发…

[架构之路-96]:《软件架构设计:程序员向架构师转型必备》-6-需求与用户用例User Case/Senario建模

第6章 需求与用户用例User Case建模备注&#xff1a;严格意义上讲&#xff0c;用户用例属于需求分析领域&#xff0c;不属于架构设计。用户用例是架构设计最重要的输入参考之一。User Case和User Senario是非常重要的描述需求的重要手段6.1 常用的4种用例技术6.1.1 用例图6.1.2…

学习Java开发按此路线规划,从10K到40K全都有了,我就是这样过来的

如果有一天我醒来时&#xff0c;发现自己的几年Java开发经验被抹掉&#xff0c;重新回到了一个小白的状态。我想要重新自学Java&#xff0c;然后找到一份自己满意的Java工作&#xff0c;我想大概只需要6个月的时间就够了&#xff0c;如果顺利的话&#xff0c;4个月也差不多。如…

用光盘怎样重装电脑系统

用光盘怎样重装电脑系统&#xff1f;重装系统&#xff0c;听起来好像很难的样子。其实没那么难&#xff0c;用光盘装还是比较容易的。下面一起看看如何用光盘重装系统吧。 工具/原料&#xff1a; 系统版本&#xff1a;win7 品牌型号&#xff1a;联想yoga13 方法/步骤&#xf…

Vue使用axios发送get请求并携带参数

前言 其实关于Vue使用axios发送get请求并携带参数&#xff0c;我之前写过一篇&#xff0c;但是昨天又发现了另外一种方式&#xff0c;所以就单独写一篇进行总结。 之前写的那篇使用get请求并携带参数都是使用的字符串拼接的方式 感兴趣可以参考&#xff1a; Vue使用axios进行g…