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

[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] += 1d[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 = 0for i,v in enumerate(nums):if v == x:p += 1 if p*2 > i+1 and (y-p)*2>(n-i-1):return ireturn -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+1break# 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['#'] = 1def query(s):cur = triefor i,c in enumerate(s,start=1):if c not in cur:return 0 cur = cur[c]if '#' in cur:return i return 0l = 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+2ans = max(ans, r-l+1)return ans                 

参考链接

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是统一建模语言(UML)UML与UML类图的基本概念

什么是统一建模语言UML(Unified Modeling Language) UML(统一建模语言)是一种通用的建模语言,用于描述软件系统的结构、行为和交互。它提供了一组符号和规则,用于创建可视化的图形模型,帮助开发…

【Leetcode】43. 字符串相乘

Halo,这里是Ppeua。平时主要更新C,数据结构算法,Linux与ROS…感兴趣就关注我bua! Leetcode 43 题目:示例:题解:详细图解:代码实现: 题目: 示例: 题解: 这是…

DBeaver数据库管理工具安装连接PostgreSQL和DM

文章目录 1. 安装2. 连接PostgreSQL3. 连接DM83.1 下载驱动3.2 添加驱动3.3 连接3.4 创建表空间和用户3.5 执行sql 4. 连接Mysql 1. 安装 下载地址 https://dbeaver.io/download/ 2. 连接PostgreSQL 配置显示所有数据库 第二个勾选会显示模板数据库 点击测试连接&#xff0…

如何搭建个人博客?

博客成品展示: 首页: 代码高亮 文章分类 首先需要准备一台云服务器和域名。 域名没有备案的话推荐雨云的美国,速度挺快的。 点我跳转服务器购买地址 配置选入门版也够用了,一年大概200块钱不到,标准版更好咯&#x…

【UniApp开发小程序】项目创建+整合UI组件(FirstUI和uView)

创建项目 下图为初始化的项目的文件结构 引入组件 俗话说:“工欲善其事,必先利其器”,为了更加方便地开发出页面较为美观的小程序,我们先引入成熟的UI组件,再开始开发之旅。(如果你是前端高手&#xff0…

mycat设置sql隔离级别的问题

问题 General log中出现大量SQL “SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ”。 该语句会引起两个问题, 1: "REPEATABLE READ"不是我们预期的事物隔离级别。 2: 大量无效的SQL影响性能。 注: MySql的可重复读会带来怎样…

[STM32教程]01如何开始准备hal库的开发环境

文章目录 概述1、认识硬件环境1.1 ARM简介1.2 STM32简介 2. 软件开发环境准备2.1 Keil MDK安装2.2 安装STM32Cube MX2.3 安装STM32 HAL库2.4 St-Link V2使用 总结 概述 本文介绍如何准备stm32f103的hal库工程开发环境,包括cubemx安装、keil mdk安装、stm32 hal库安…

Linux下如何部署Nuxt项目(二)

Linux下如何部署Nuxt项目(一)_小鸟哗啦啦的博客-CSDN博客,书接上回,以实际场景开始。 请认真看完这篇文章,还不会部署Nuxt,我直接拿弹弓打你们家玻璃! 一、nuxt的配置检查 服务端渲染的应用,应该是先编译构…

【从零开始学习JAVA | 第二十九篇】Stream流

目录 前言: Stram流: 设计目标: 使用步骤: 1.先得到一条Stream流,并把数据放上去。 2.利用Stream流中的各种API进行操作。 使用Stream流的注意事项: 总结: 前言: 本文我们将学习Stream流…

vue3 前端编码规范

prettier 配置 1. vscode 安装prettier 的 插件 2. 新建 .prettierrc 文件 {"semi": false, // 不尾随分号"singleQuote": true, // 使用单引号"trailingComma": "none" // 多行逗号分隔的语法,最后一行不加逗号 }eslin…

《远见》阅读笔记

不同的环境,不同的职业,职业生涯的建议并没有什么不同 找到热爱的工作,建立热爱的生活 如何思考职业远景 如何分配时间 如何扩张人脉 职业生涯决策框架 三个部分 职场思维、框架、工具实用性建议和案例现实生活为基础,平衡职…

Animboat Application Framework

SpringBoot的服务将部署在云端 管理云端数据和处理分布式的业务请求 本地基础服务将作为云端和终端中间媒介, 与局域网内其它dcc 插件或者app运行实例进行通信, 同时本地基础服务将负责本地数据的管理。 每个AppInstance都会有自己的FlaskSvr用于与Loc…