[LeetCode周赛复盘] 第 354 场周赛20230716

news2024/11/27 10:24:10

[LeetCode周赛复盘] 第 354 场周赛20230716

    • 一、本周周赛总结
    • 6889. 特殊元素平方和
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 6929. 数组的最大美丽值
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 6927. 合法分割的最小下标
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 6924. 最长合法子字符串的长度
      • 1. 题目描述
      • 2. 思路分析
      • 3. 代码实现
    • 参考链接

一、本周周赛总结

  • T1 模拟。
  • T2 RUPQ 差分/树状数组。
  • T3 前后缀分解。
  • T4 双指针+trie(py负优化)。
    在这里插入图片描述

6889. 特殊元素平方和

6889. 特殊元素平方和

1. 题目描述

在这里插入图片描述

2. 思路分析

按题意模拟即可。

3. 代码实现

class Solution:
    def sumOfSquares(self, nums: List[int]) -> int:
        return sum(v*v for i,v in enumerate(nums,start=1) if len(nums)%i==0)

6929. 数组的最大美丽值

6929. 数组的最大美丽值

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 注意到值域很小,因此可以值域当下标,记录每个下标可以被访问多少次。
  • 那么其实是个区间+1。用差分可以搞。树状数组也可以。
  • 实现时,只需要对值域mn~mx处理即可,因为所有数都加相同的k,边界以外的次数一定不会超过边界(它们一定会路过边界)。

3. 代码实现

class Solution:
    def maximumBeauty(self, nums: List[int], k: int) -> int:
        mx = max(nums)
        d = [0]*(mx+2)
        for v in nums:
            x,y = max(0,v-k), min(mx,v+k)
            d[x] += 1
            d[y+1] -= 1 
            
        return max(accumulate(d))

6927. 合法分割的最小下标

6927. 合法分割的最小下标

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 前后缀分解。
  • 先计算出主元素x和它出现的次数y。那么前后缀的相同主元素只能是x。
  • 那么可以从头向后遍历,记录x的出现次数p,并计算后边剩余的次数y-p。
  • 找到第一个满足条件的下标即可。

3. 代码实现

class Solution:
    def minimumIndex(self, nums: List[int]) -> int:
        n = len(nums)
        cnt = Counter(nums)
        x,y = cnt.most_common(1)[0]
        p = 0
        for i,v in enumerate(nums):
            if v == x:
                p += 1 
                if p*2 > i+1 and (y-p)*2>(n-i-1):
                    return i
        return -1

6924. 最长合法子字符串的长度

6924. 最长合法子字符串的长度

1. 题目描述

在这里插入图片描述

2. 思路分析

  • 最长子段首先想到双指针/滑窗。
  • 枚举每个字母作为子段的右端点。尝试检查这个尾缀里是否再forbid里。
  • 由于forbid长度最多10,因此只需要暴力检查10次尾缀,找到最短那个fb尾缀,把左窗口挪过来,注意是l=j+1,因为要破坏这个非法单词。
  • 这样复杂度是n1010,每个字符要检查10次,每次检查复杂度是len(s)=10。

  • 可以用字典树trie优化成n*10。但是实测py果然还是切片+朴素set更快。
  • 对forbid逆序建树。
  • 枚举c为右端点时,也逆序向前组成字符串,然后去trie里判断是否存在这个单词。
  • 由于检查也是从右向左,同步检查,因此复杂度就是10。

3. 代码实现

朴素set

class Solution:
    def longestValidSubstring(self, word: str, forbidden: List[str]) -> int:
        fb = set(forbidden)
        l = ans = 0 
        for r,c in enumerate(word):            
            for j in range(r,max(l-1,r-10),-1):
                if word[j:r+1] in fb:
                    l = j+1
                    break
            # print(r,l)
            ans = max(ans, r-l+1)
        return ans                       

trie

class Solution:
    def longestValidSubstring(self, word: str, forbidden: List[str]) -> int:
        trie = {}
        for s in  forbidden:
            s = s[::-1]
            cur = trie 
            for c in s:
                if c not in cur:
                    cur[c] = {}
                cur = cur[c]
            cur['#'] = 1
        def query(s):
            cur = trie
            for i,c in enumerate(s,start=1):
                if c not in cur:
                    return 0 
                cur = cur[c]
                if '#' in cur:
                    return i 
            return 0
        l = ans = 0 
        for r,c in enumerate(word):     
            s = word[max(l,r-9):r+1] 
            i = query(s[::-1])
            if i:
                l = r - i+2
            ans = max(ans, r-l+1)
        return ans                 

参考链接

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

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

相关文章

Go语言之重要数组类型map(映射)类型

通过切片,我们可以动态灵活存储管理学生姓名、年龄等信息,比如 names : []string{"张三","李四","王五"} ages : []int{23,24,25} fmt.Println(names) fmt.Println(ages)但是如果我想获取张三的年龄,这是一个…

概率论的学习和整理17:EXCEL的各种期望,方差的公式

目录 1 总结 1.1 本文目标总结方法 1.2 总结一些中间关键函数 2 均值和期望 2.1 求均值的公式 2.2 求随机变量期望的公式 2.3 求随机变量期望的朴素公式 3 方差 3.1 确定数的方差 3.2 统计数的方差公式 3.3 随机变量的方差公式 3.4 EXCEL提供的直接计算方差的公式 …

Ant Design Vue组件,a-select标签

a-select标签是组件里的选择框,具体使用可以查看官网,这里记录一下在使用中遇到的问题。 最近在做项目的时候有一个需求在 a-modal 标签中加入 a-select 标签,a-modal 是模态对话框,意思就是在模态对话框里面添加选择框&#xff0…

Cglib 动态代理实现

每天看看新东西,心情也要好上许多 问题 cglib是如何实现动态代理的cglib如何支持类的代理cglib和jdk的动态代理有什么区别 使用方式 cglib不属于jdk的一部分,因此要使用需要先引入相应的包,maven依赖如下 <dependency><groupId>cglib</groupId><artif…

TortoiseGit 入门指南09:合并

前面章节讲了 分支&#xff0c;提到一种常用的工作流&#xff1a;将默认分支&#xff08;master&#xff09;设置为主分支&#xff0c;保存最新的、随时可以发布的版本&#xff0c;所有的新特性、BUG都在另一个称为特性分支上增加或修改&#xff0c;然后在一个合适点&#xff0…

Ubuntu下搭建Redis主从集群

目录 准备实例和配置 开启主从关系 测试配置 搭建的主从集群结构&#xff0c;只有主服务器与客户端进行写操作&#xff0c;通过主从同步数据&#xff0c;从服务器向客户端提供读操作 共包含三个节点&#xff0c;一个主节点&#xff0c;两个从节点。 这里我们会在同一台虚拟机…

【C++】多线程编程二(std::thread详解)

目录 std::thread详解 &#xff08;1&#xff09;启动线程 ①无参无返回的函数作为入参 ②函数对象&#xff08;仿函数&#xff09;作为入参 &#xff08;2&#xff09;不等待线程detch() &#xff08;3&#xff09;等待线程完成join() &#xff08;4&#xff09;向线程…

CANoe如何配置Master/Slave模式

系列文章目录 文章目录 系列文章目录前言一、CANoe配置端口二、CANoe配置Master模式三、CANoe配置Slave模式前言 随着智能电动汽车的行业的发展,车载以太网的应用越来越广泛,最近很多朋友在问CANoe Master/Slave模式如何设置,车载以太网物理层也有一项是测试Master/Slave模式…

springcloud整合nacos实现注册发现中心

文章目录 微服务为什么需要服务注册发现中心怎么使用注册发现中心1.本示例环境2.nacos 安装3.pom.xml4.application.yml5.NacosDiscoveryDemoController6.ServerConfig7.NacosNacosDiscoveryServiceImpl8.启动用http工具测试结果 如果需要完整源码请关注公众号"架构殿堂&q…

2023.7.16-偶数(奇数)的枚举

功能&#xff1a;输入一个整数&#xff0c;结果打印出所有不大于这个整数的偶数。 程序&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() {int a, b;printf("请输入一个整数&#xff1a;");scanf("%d",&a);print…

Android之Intent

意图介绍 一个意图(Intent)对象包含了目标组件、动作、数据、类别、附加数据、标志六个部分。 目标组件 目标组件可以帮助应用发送显式意图调用请求。在创建Intent时&#xff0c;可以通过setComponent方法来设置一个组件&#xff0c;如&#xff1a; //设置组件 intent.setC…

19.基于XML的自动装配

基于XML的自动装配 自动装配&#xff1a; 根据指定的策略&#xff0c;在IOC容器中匹配某一个bean&#xff0c;自动为指定的bean中所依赖的类类型或接口类型属性赋值 使用bean标签的autowire属性设置自动装配效果(默认为no和defalse不进行装配——bean中的属性不会自动匹配某个b…

Nodejs的字节操作(Buffer)

Hi I’m Shendi Nodejs的字节操作&#xff08;Buffer&#xff09; 字节操作是一个编程语言中必不可少的&#xff0c;而在NodeJs中也可以很方便的进行字节操作。 Buffer类 在 js 中没有二进制数据类型&#xff0c;但在一些情况下必须使用到二进制数据类型&#xff0c;比如网络通…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 OpenAI 集成搭建相似性搜索系统

目录 准备工作 检索图书 本文将讨论如何使用 OpenAI 的 Embedding API 与 Zilliz Cloud 搭建相似性搜索系统。 在本篇中你将看到如何使用 OpenAI 的 Embedding API 和 Zilliz Cloud 完成图书检索。当前,很多的图书检索方案,包括公共图书馆里使用的那些方案,都是使用关键词…

简单认识MySQL数据库事务

文章目录 一、MySQL事务的概念1、简介2、事务的ACID特点1.原子性&#xff08;Atomicity&#xff09;2.一致性&#xff08;Consistency&#xff09;3.隔离性&#xff08;lsolation&#xff09;4.持久性&#xff08;Durability) 3、并发访问表的一致性问题和事务的隔离级别1.并发…

C# Modbus通信从入门到精通(6)——Modbus RTU(0x04功能码)

1、04(0x04)读输入寄存器 使用该功能码能从远程地址中读取1到125个输入寄存器的值,每个输入寄存器都占两个字节,读取的输入寄存器数量由主站读取时指定。 2、发送报文格式 更详细的格式如下: 从站地址+功能码+起始地址高位+起始地址低位+寄存器数量高位+寄存器数量低位+…

备战求战 | 笔试强训6

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、十进制变量i的值为100&#xff0c;那么八进制的变量i的值为&#xff08;&#xff09; A. 146 B. 148 C. 144 D. 142 2、执行下面语句后的输出为 int I1; if(I<0)printf("****\n") …

全志F1C200S嵌入式驱动开发(串口驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 对于uboot、kernel和rootfs来说,他们的串口输出一般都是uart0。一般这么做,是没有问题的。只不过我们自己买的这块f1c200s电路板,设计者把uart转ttl的接口,改接到了uart1上面。…

自定义注解+AOP完成公共字段填充

在开发中&#xff0c;我们的实体类经常会有几个公共的字段&#xff0c;如下图的创建时间&#xff0c;修改时间就为各个类共有的字段&#xff1a; 目前项目中处理这些字段都是在每一个业务方法中进行赋值操作,如下: 如果都按照上述的操作方式来处理这些公共字段, 需要在每一个业…

中级课程——信息收集(完结)

文章目录 概要whois备案号警告CDN历史解析查询子域名查询后台目录指纹C段&#xff0c;旁站真实IP与CDN端口证书其他资产社工漏洞情报实操案例 概要 whois 备案号 警告 CDN历史解析查询 子域名查询 工具推荐 或者找在线工具 后台目录 指纹 C段&#xff0c;旁站 真实IP与CDN 端…