LeetCode 第420场周赛个人题解

目录

 

Q1. 出现在屏幕上的字符串序列

原题链接

思路分析

AC代码

Q2. 字符至少出现 K 次的子字符串 I

原题链接

思路分析

AC代码

Q3. 使数组非递减的最少除法操作次数

原题链接

思路分析

AC代码

Q4. 判断 DFS 字符串是否是回文串

原题链接

思路分析

AC代码


 

Q1. 出现在屏幕上的字符串序列

原题链接

​​​​​​​Q1. 出现在屏幕上的字符串序列

思路分析

模拟

签到题,直接模拟即可

时间复杂度:O(N)

AC代码

class Solution:def stringSequence(self, target: str) -> List[str]:res = []s = ""for c in target:x = ord('a')res.append(s + chr(x))while x < ord(c):x += 1res.append(s + chr(x))s += creturn res

Q2. 字符至少出现 K 次的子字符串 I

原题链接

Q2. 字符至少出现 K 次的子字符串 I

思路分析

暴力滑窗

因为数据量很小,赛时不考虑线性做法,直接暴力滑窗即可

时间复杂度:O(N^2)

AC代码

class Solution:def numberOfSubstrings(self, s: str, k: int) -> int:n = len(s)s = list(map(ord, s))b = ord('a')res = 0for i in range(n):cnt = [0] * 26for j in range(i, n):cnt[s[j] - b] += 1if cnt[s[j] - b] == k:res += n - jbreakreturn res

 

Q3. 使数组非递减的最少除法操作次数

原题链接

Q3. 使数组非递减的最少除法操作次数

思路分析

素数筛

预处理 值域 的 素数筛,得到 minp[i],代表 i 的最小质因子

然后我们贪心的从后向前考虑,后面越大,前面余地越大

如果nums[i] >= nums[i + 1] 我们就跳过

否则按照题目的要求进行模拟,题目的操作等价于 i = minp[i]

 

时间复杂度:O(n ln n)

AC代码

N = 1_000_000minp = [-1] * (N + 1)
primes = []for i in range(2, N + 1):if minp[i] == -1:minp[i] = iprimes.append(i)for p in primes:if p * i > N: breakminp[p * i] = pif p == minp[i]: break    
class Solution:def minOperations(self, nums: List[int]) -> int:n = len(nums)res = 0for i in range(n - 2, -1, -1):if nums[i] <= nums[i + 1]: continuewhile nums[i] > nums[i + 1]:if minp[nums[i]] == nums[i]: return -1nums[i] = minp[nums[i]]res += 1return res

Q4. 判断 DFS 字符串是否是回文串

原题链接

Q4. 判断 DFS 字符串是否是回文串

思路分析

Manacher + dfs

根据题意 我们跑 后序 dfs 得到一个字符串seq,每个子树的 dfsstr 都是 seq 的一个子串

我们对这些子串判断是否是回文串即可

快速判断一个字符串的子串是否是回文串:Manacher算法

详见:Manacher(马拉车)算法详解,原理分析_马拉车算法原理-CSDN博客

时间复杂度:O(N)

AC代码

std::vector<int> manacher(const std::string& s) {std::vector<int> t{0};for (char c : s)t.push_back(c), t.push_back(0);int n = t.size();std::vector<int> r(n);for (int i = 0, j = 0; i < n; ++ i) {if (j + r[j] > i)r[i] = std::min(r[2 * j - i], j + r[j] - i);while (i - r[i] >= 0 && i + r[i] < n && t[i - r[i]] == t[i + r[i]])++ r[i];if (i + r[i] > j + r[j])j = i;}return r;
}
class Solution {
public:vector<bool> findAnswer(vector<int>& parent, string s) {int n = s.size();std::vector<std::vector<int>> adj(n);for (int i = 1; i < n; ++ i) {adj[parent[i]].push_back(i);adj[i].push_back(parent[i]);}std::string seq;std::vector<int> siz(n, 1), dfn(n);int cur = 0;auto dfs = [&](auto &&self, int u) -> void{for (int v : adj[u]) {if (v == parent[u]) continue;self(self, v);siz[u] += siz[v];}seq.push_back(s[u]);dfn[u] = cur ++;};dfs(dfs, 0);auto m = manacher(seq);std::vector<bool> res(n);for (int i = 0; i < n; ++ i) {int r = dfn[i] * 2 + 1, l = (dfn[i] - siz[i] + 1) * 2 + 1;res[i] = m[(l + r) / 2] - 1 >= siz[i];}return res;}
};

 

 

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

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

相关文章

CRMEB标准版Mysql修改sql_mode

数据库配置 1.宝塔控制面板-软件商店-MySql-设置 2.点击配置修改&#xff0c;查找sql-mode或sql_mode &#xff08;可使用CtrlF快捷查找&#xff09; 3.复制 NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 然后替换粘贴&#xff0c;保存 注&#xff1a;MySQL8.0版本的 第三步用…

Vulkan 开发(三):Vulkan 物理设备

Vulkan 物理设备 图片来自《 Vulkan 应用开发指南》 上一节了解了 Vulkan 实例&#xff0c;一旦有了实例&#xff0c;就可以查找系统里安装的与 Vulkan 兼容的物理设备。 Vulkan 物理设备&#xff08;PhysicalDevice&#xff09;一般是指支持 Vulkan 的物理硬件&#xff0c;通…

基于模型设计的智能平衡移动机器人-基础实验eCAP

目录 eCAP基本介绍 捕捉模式或者是APWM模式 捕获模块功能 CCS中打开模型 eCAP基本介绍 TMS320F28069的捕获单元模块能够捕获外部输入引脚的逻辑状态&#xff08;电平的高或低、电平翻转时的上升沿或下降沿&#xff09;&#xff0c;并利用内部定时器对外部事件或者引脚状态变…

关于网络接口监测工具ifstat命令的功能详解以及Linux下lsof命令的使用详解

一、关于网络接口监测工具ifstat命令的应用 ifstat工具是个网络接口监测工具,比较简单看网络流量&#xff0c;像VMSTAT那样一行行显示着浏览信息&#xff0c;可以设置显示某个或所有网卡流量数据。ifstat默认不监控回环接口&#xff0c;显示的流量单位是KB。系统默认未安装&…

【目标检测---旋转框标注】roLabelImg安装与使用

在目标检测领域&#xff0c;数据标注是至关重要的一环。为了提升模型的准确率和泛化能力&#xff0c;高质量的标注数据集是必不可少的。而roLabelImg作为一款专门用于标注旋转框的工具&#xff0c;为处理复杂场景下的目标检测提供了极大的便利。本文将详细介绍roLabelImg的安装…

电力变压器故障诊断数据集(猫脸码客 第219期)

电力变压器故障诊断数据集 电力变压器作为电力系统中不可或缺的重要设备&#xff0c;其稳定性和可靠性直接关系到整个电网的安全运行。然而&#xff0c;由于运行环境复杂、负载多变以及设备老化等因素&#xff0c;变压器在运行过程中难免会出现各种故障。这些故障若不能及时发…

【解决Docker无剩余存储磁盘空间问题】

【解决Docker无剩余存储磁盘空间问题】 目录 【解决Docker无剩余存储磁盘空间问题】一、问题概述二、问题原因三、解决方案1、方案一&#xff1a;清除Docker磁盘空间2、方案二&#xff1a;更换Docker磁盘存储目录 一、问题概述 执行Docker build -t [镜像名] [源目录] 命令报错…

基于Neo4j的推理知识图谱展示:智能系统与图谱可视化

还在找毕业设计项目吗&#xff1f;试试我们基于Neo4j打造的推理知识图谱展示系统&#xff01;这是一个兼具前沿技术与实战经验积累的项目&#xff0c;完美适合作为你的毕业设计。 &#x1f449; 什么是知识图谱&#xff1f; 简单来说&#xff0c;它是通过连接的节点&#xff0…

线性代数基础02

目录 1.向量 1.1向量的定义 1.2向量的运算 1.2.1向量加法 1.2.2向量数乘 1.2.3向量点积 1.3矩阵的特征值和特征向量 1.4向量的模 1.4.1向量的模的定义 1.4.2向量的模的几何解释 1.4.3向量的模的性质 1.5向量的内积 1.5.1向量的内积的定义 1.5.2向量的内积的几何解…

STMicroelectronics 意法半导体芯片选型表

意法半导体作为全球知名的半导体厂商&#xff0c;其产品广泛应用于各个领域&#xff0c;从消费电子到工业控制&#xff0c;从汽车电子到通信设备&#xff0c;都能看到意法半导体芯片的身影。在电子硬件设计领域&#xff0c;芯片的选型至关重要。亿配芯城&#xff08;ICgoodFind…

WPF常见容器全方位介绍

Windows Presentation Foundation (WPF) 是微软的一种用于构建Windows桌面应用程序的UI框架。WPF的布局系统基于容器&#xff0c;帮助开发者以灵活、响应的方式组织用户界面 (UI) 元素。本篇文章将详细介绍WPF中几种常见的容器&#xff0c;包括Grid、StackPanel、WrapPanel、Do…

Aspose.PDF功能演示:使用 JavaScript 从 PDF 中提取文本

在数据提取、业务文档自动化和文本挖掘方面&#xff0c;使用 JavaScript 从PDF中提取文本非常有用。它允许开发人员自动执行从 PDF 收集信息的过程&#xff0c;从而显著提高处理大量文档的生产力和效率。在这篇博文中&#xff0c;我们将学习如何使用 JavaScript 从 PDF 中提取文…

python-django-mysql原生sql增删改查搭建搭建web项目

先看我本地的项目结构 1 设置虚拟环境 python -m venv venv .\venv\Scripts\activate 2 在虚拟环境中安装Django 执行 pip install -r requirements.txt asgiref3.8.1 backports.zoneinfo0.2.1 Django3.2 mysqlclient2.2.4 pytz2024.2 sqlparse0.5.1 typing-extensions4.1…

数据结构--二叉树随记

二叉树主要分为四类&#xff1a;满二叉树、完全二叉树、二叉搜索树、平衡二叉搜索树。 高度,深度,层 满二叉树 满二叉树就是每一层节点都是满的&#xff0c;整棵树像一个正三角形&#xff1a; 满二叉树有个优势&#xff0c;就是它的节点个数很好算。假设深度为 h&#xff0c;那…

C# 数据类型转换

文章目录 前言注意事项1. 隐式转换&#xff08;Implicit Conversion&#xff09;2. 显式转换&#xff08;Explicit Conversion, 也称为强制转换&#xff09;3. 使用转换方法4. 使用 Convert 类5. 使用 Parse 和 TryParse 方法示例代码 前言 在C#中&#xff0c;数据类型转换是一…

讲一讲Redis五大数据类型的底层实现

讲一讲Redis五大数据类型的底层实现 Redis五大数据类型的底层实现 Redis的五大数据类型分别是字符串&#xff08;String&#xff09;、列表&#xff08;List&#xff09;、哈希&#xff08;Hash&#xff09;、集合&#xff08;Set&#xff09;和有序集合&#xff08;Zset&…

枚举的应用

1.枚举的语法特点 枚举是jdk1.5提供的一个特性 枚举是一个特殊的类&#xff0c;这个类的对象的数量是有限的。在定义枚举类的同时就已经确定了类对象及类对象的数量。 枚举使用enum关键字定义 class A{} enum A{} 在枚举类中的第一行&#xff0c;就需要提供枚举类的对象&a…

Fake Location 限制解除(运动世界校园,keep......)

一觉起来成绩还是正常的&#xff0c;运动世界校园的审核是非常严格的&#xff0c;因为在这之前&#xff0c;我帮助同学登入别的账号进行跑步&#xff0c;发现过来几天全被检测到了异常,成绩也是直接无效了哈&#xff0c;我们今天再搞一个关于keep的&#xff0c;因为当时关于kee…

三大编程思想(POP、OOP、AOP、FOP)及oop 五大设计原则

概述 POP&#xff1a;面向过程编程&#xff08;Procedure Oriented Programming&#xff09; OOP&#xff1a;面向对象编程&#xff08;Object Oriented Programming&#xff09; AOP&#xff1a;面向切面编程&#xff08;Aspect Oriented Programming&#xff09; FOP&#x…

Linux-自旋锁

概述 自旋锁是一种多线程同步机制&#xff0c;用于保护共享资源免受并发访问的影响。在多个线程 尝试获取锁时&#xff0c;它们会持续自旋&#xff08;即在一个循环中不断检查锁是否可用&#xff09;而不是立即 进入休眠状态等待锁的释放。这种机制减少了线程切换的开销&#…