LeetCode 第402场周赛个人题解

目录

100304. 构成整天的下标对数目 I

 原题链接

思路分析

AC代码

100301. 构成整天的下标对数目 II

原题链接

思路分析

AC代码

100316. 施咒的最大总伤害

原题链接

思路分析

AC代码        

100317. 数组中的峰值

原题链接

思路分析

AC代码


100304. 构成整天的下标对数目 I

 

原题链接

100304. 构成整天的下标对数目 I



思路分析

遍历+哈希
一次遍历,我们记录余数的出现次数即可

时间复杂度:O(N)
 

AC代码

class Solution:def countCompleteDayPairs(self, hours: List[int]) -> int:cnt = [0] * 24res = 0for x in hours:res += cnt[(24 - (x % 24)) % 24]cnt[x % 24] += 1return res

100301. 构成整天的下标对数目 II

原题链接

100301. 构成整天的下标对数目 II

思路分析

和上一题一样

AC代码

class Solution:def countCompleteDayPairs(self, hours: List[int]) -> int:cnt = [0] * 24res = 0for x in hours:res += cnt[(24 - (x % 24)) % 24]cnt[x % 24] += 1return res

100316. 施咒的最大总伤害

原题链接

100316. 施咒的最大总伤害

思路分析

树状数组+二分+线性dp

先将原数组排序去重记为st,记录每个咒语出现次数cnt[]

定义状态f[i]为以咒语i结尾的方案的最大伤害

那么我们可以从f[j]转移,其中 st[j] < s[i] - 2

那么我们只需要求出f[0, j]的最大值进行转移即可

求前缀最大值直接树状数组即可

快速找到j,二分即可

时间复杂度:O(nlogn)

AC代码        

class Fenwick:def __init__(self, n: int):self.n = nself.tr = [0] * (n + 1)def add(self, x: int, k: int) -> None:n = self.ntr = self.trwhile x <= n:tr[x] = max(tr[x], k)x += x & -xdef query(self, x: int) -> None:res = 0tr = self.trwhile x:res = max(res, tr[x])x &= x - 1return resclass Solution:def maximumTotalDamage(self, power: List[int]) -> int:cnt = Counter(power)st = sorted(set(power))n = len(st)f = [0] * (n + 1)tr = Fenwick(n)for i in range(1, n + 1):lt = bisect_left(st, st[i - 1] - 2)f[i] = tr.query(lt) + cnt[st[i - 1]] * st[i - 1]tr.add(i, f[i])return max(f)

100317. 数组中的峰值

原题链接

100317. 数组中的峰值

思路分析

树状数组+模拟

树状数组维护前缀山峰数目

考虑修改num[x]只会影响nums[x, x-1, x+1]三个位置的状态,我们每次修改操作最多涉及三次树状数组单点修改

我们用vis[i]表示i是否是山峰

然后修改后如果vis[i] != 新值,那么根据新值和原状态的关系来决定如何更新,是+1还是-1

需要注意的细节:查询[l, r]的山峰数目,l 和 r不算山峰

时间复杂度:O(nlogn)

AC代码

class Fenwick:def __init__(self, n: int):self.n = nself.tr = [0] * (n + 1)def add(self, x: int, k: int) -> None:n = self.ntr = self.trwhile x <= n:tr[x] += kx += x & -xdef query(self, x: int) -> None:res = 0tr = self.trwhile x:res += tr[x]x &= x - 1return resclass Solution:def countOfPeaks(self, nums: List[int], queries: List[List[int]]) -> List[int]:res = []n = len(nums)cur = 0tr = Fenwick(n)vis = [False] * (n)for i in range(1, n - 1):if nums[i - 1] < nums[i] > nums[i + 1]:tr.add(i + 1, 1)vis[i] = Truedef upd(x: int) -> None:nt = (nums[x - 1] < nums[x] > nums[x + 1])if nt != vis[x]:vis[x] = ntif nt:tr.add(x + 1, 1)else:tr.add(x + 1, -1)for i, (op, x, y) in enumerate(queries):if op == 1:res.append(max(0, tr.query(y) - tr.query(x + 1)))else:nums[x] = yif 0 < x - 1 < n - 1:upd(x - 1)if 0 < x < n - 1:upd(x)if 0 < x + 1 < n - 1:upd(x + 1)return res

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

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

相关文章

File API以及相关概念

一、Blob Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取&#xff0c;也可以转换成 ​ReadableStream 来用于数据操作。 构造方法 new Blob(blobParts) new Blob(blobParts,options) blobParts是一个可迭代对象&#xff08;就是能…

深度学习:PyCharm中运行Bash脚本

GitHub上的开源代码有很多是用 Bash 脚本来自动化数据处理、模型训练和模型评估等任务的&#xff0c;如何使用PyCharm来运行Bash脚本&#xff0c;从而快速上手GitHub开源代码&#xff0c;是一个实用的技巧&#xff0c;本文主要介绍PyCharm中运行Bash脚本的方法。 PyCharm 是一个…

「实战应用」如何用图表控件LightningChart JS创建SQL仪表板应用(二)

LightningChart JS是Web上性能特高的图表库&#xff0c;具有出色的执行性能 - 使用高数据速率同时监控数十个数据源。 GPU加速和WebGL渲染确保您的设备的图形处理器得到有效利用&#xff0c;从而实现高刷新率和流畅的动画&#xff0c;常用于贸易&#xff0c;工程&#xff0c;航…

OpenCore 引导完美升级

备份原有 OC (做好回滚的准备下载新版 OpenCore https://github.com/acidanthera/OpenCorePkg/releases将 1, 3, 4 里面的文件使用新版进行替换 4 里面的文件严格来说并不需要, 只是留着方便使用不追求完美到这就可以收工了将 OC 复制到 U 盘 EFI U 盘格式化可以使用: diskutil…

微服务开发与实战Day09 - Elasticsearch

一、DSL查询 Elasticsearch提供了DSL&#xff08;Domain Specific Language&#xff09;查询&#xff0c;就是以JSON格式来定义查询条件。类似这样&#xff1a; DSL查询可以分为两大类&#xff1a; 叶子查询&#xff08;Leaf query clauses&#xff09;&#xff1a;一般是在特…

Fortran 编程整理

Fortran编程语法整理 01 Fortran 中的程序单元1-1 submodule&#xff08;子模块&#xff09; 02 子程序与函数2-1 概述2-2 函数与子程序特性&#xff08;1&#xff09;为函数结果指定不同名称 03 stop命令后跟说明04 do concurrent4-1 do concurrent 的使用 05 纯过程&#xff…

Docker Jenkins(改错版本)

Devops:它强调开发(Development)和运维(Operations)团队之间的协作.实现更快,更可靠的软件交付部署. JenKins是一个开源的自动化服务器,广泛用于构建,测试和部署软件项目.它是持续集成(CI)和持续交付/部署(CD)的工具.JenKins是实现DevOps实践的重要工具. 前端项目部署一般流程:…

Matlab|基于V图的配电网电动汽车充电站选址定容-可视化

1主要内容 基于粒子群算法的电动汽车充电站和光伏最优选址和定容 关键词&#xff1a;选址定容 电动汽车 充电站位置 仿真平台&#xff1a;MATLAB 主要内容&#xff1a;代码主要做的是一个电动汽车充电站和分布式光伏的选址定容问题&#xff0c;提出了能够计及地理因素和服…

ubantu 计算一个文件夹内的文件数量命令

ubantu 计算一个文件夹内的文件数量命令 在Ubuntu中&#xff0c;你可以使用find命令来计算一个文件夹内的文件数量。以下是一个基本的命令示例&#xff1a; find /path/to/directory -type f | wc -l这里的/path/to/directory是你想要计算文件数量的文件夹的路径。find命令会…

蓝队-溯源技巧

溯源技巧 大致思想 通常情况下&#xff0c;接到溯源任务时&#xff0c;获得的信息如下 攻击时间 攻击 IP 预警平台 攻击类型 恶意文件 受攻击域名/IP其中攻击 IP、攻击类型、恶意文件、攻击详情是溯源入手的点。 通过攻击类型分析攻击详情的请求包&#xff0c;看有没有攻击者…

Web前端网页源代码:深入剖析与实用技巧

Web前端网页源代码&#xff1a;深入剖析与实用技巧 在Web开发的浩瀚领域中&#xff0c;前端网页源代码扮演着至关重要的角色。它不仅是网页的骨架&#xff0c;更是实现各种交互和视觉效果的基石。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;对Web前端网页源代…

C# OpenCvSharp 矩阵计算-determinant、trace、eigen、calcCovarMatrix、solve

🚀 在C#中使用OpenCvSharp库进行矩阵操作和图像处理 在C#中使用OpenCvSharp库,可以实现各种矩阵操作和图像处理功能。以下是对所列函数的详细解释和示例,包括运算过程和结果。📊✨ 1. determinant - 计算行列式 🧮 定义: double determinant(InputArray mtx); 参数…

web前端网页实例:深度剖析与实践指南

web前端网页实例&#xff1a;深度剖析与实践指南 在数字化时代的浪潮中&#xff0c;web前端网页已成为企业与用户之间的桥梁&#xff0c;承载着信息的传递与交互的重任。本文将通过四个方面、五个方面、六个方面和七个方面的详细剖析&#xff0c;带您深入了解web前端网页实例的…

实在智能应邀出席中国移动科技工作者论坛,分享基于大模型+Agent智能体的“企业大脑”

为大力弘扬科学家精神&#xff0c;激励广大科技工作者践行科技报国、创新为民&#xff0c;争做高水平科技自立自强排头兵&#xff0c;6月6日&#xff0c;中国移动在线营销服务中心&#xff08;以下简称“在线中心”&#xff09;“2024年科技工作者大讲堂暨青年创新创效论坛”于…

Matlab|基于手肘法的kmeans聚类数的精确识别【K-means聚类】

主要内容 在电力系统调度研究过程中&#xff0c;由于全年涉及的风、光和负荷曲线较多&#xff0c;为了分析出典型场景&#xff0c;很多时候就用到聚类算法&#xff0c;而K-means聚类就是常用到聚类算法&#xff0c;但是对于K-means聚类算法&#xff0c;需要自行指定分类数&…

C/C++:指针用法详解

C/C&#xff1a;指针 指针概念 指针变量也是一个变量 指针存放的内容是一个地址&#xff0c;该地址指向一块内存空间 指针是一种数据类型 指针变量定义 内存最小单位&#xff1a;BYTE字节&#xff08;比特&#xff09; 对于内存&#xff0c;每个BYTE都有一个唯一不同的编号…

赶紧转行大模型,预计风口就今年一年,明年市场就饱和了!不是开玩笑

恕我直言&#xff0c;就这几天&#xff0c;各大厂都在裁员&#xff0c;什么开发测试运维都裁&#xff0c;只有大模型是急招人。 你说你不知道大模型是什么&#xff1f;那可太对了&#xff0c;你不知道说明别人也不知道&#xff0c;就是要趁只有业内部分人知道的时候入局&#…

深入理解Python中的多线程与多进程编程

深入理解Python中的多线程与多进程编程 在现代计算中,充分利用多核处理器和并行计算资源变得越来越重要。Python提供了多线程和多进程编程的支持,使开发者能够编写高效的并行程序。本文将深入探讨Python中的多线程与多进程编程,包括基本概念、使用方法以及实际应用场景。 …

String常用方法详解

auth&#xff1a;别晃我的可乐 date&#xff1a;2024年06月16日 比较大小 equals(Object obj): 用于比较字符串内容是否相等。compareTo(String anotherString): 按字典顺序比较两个字符串。 String str1 "hello"; String str2 "world";boolean isEqual …

配置Linux DNS服务器作为自己的windows 的 DNS服务器和 配置遇到的问题

安装DNS 库 和 DNS工具&#xff1a; # bind 是用于创建 dns服务的&#xff0c; bind-utils是用于测试DNS服务的工具 yum -y install bind bind-utils配置主配置文件&#xff1a; # 下载好后就已经有DNS服务&#xff0c;但是需要你自己去配置DNS服务信息# 配置主配置文件 [rootl…