LeetCode 第399场周赛个人题解

news2024/11/18 12:33:38

100323. 优质数对的总数 I

原题链接

100323. 优质数对的总数 I

思路分析

签到题

AC代码

class Solution:
    def numberOfPairs(self, nums1: List[int], nums2: List[int], k: int) -> int:
        n, m = len(nums1), len(nums2)
        ret = 0
        for i in range(n):
            for j in range(m):
                if nums1[i] % (nums2[j] * k) == 0:
                    ret += 1
        return ret

100326. 压缩字符串 III

原题链接

100326. 压缩字符串 III

思路分析

一次遍历模拟即可

时间复杂度O(n)

AC代码

class Solution:
    def compressedString(self, word: str) -> str:
        n = len(word)
        i = 0
        ret = []
        while i < n:
            j = i
            while j < n and j - i < 9 and word[i] == word[j]:
                j += 1
            ret.append(str(j - i) + str(word[i]))
            i = j
        return "".join(ret)
            

100321. 优质数对的总数 II

原题链接

100321. 优质数对的总数 II

思路分析

用nums2 * k 得到的新数集合去给自己的倍数累加贡献,最后求和即可

时间复杂度就是经典的调和级数乘个n

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

AC代码

class Solution:
    def numberOfPairs(self, nums1: List[int], nums2: List[int], k: int) -> int:
        cnt1, cnt2 = Counter(), Counter([x * k for x in nums2])
        n = max(nums1)
        for x, c in cnt2.items():
            t = x
            while t <= n:
                cnt1[t] += c
                t += x
        return sum(cnt1[x] for x in nums1)

100306. 不包含相邻元素的子序列的最大和

原题链接

不包含相邻元素的子序列的最大和 - 力扣 (LeetCode) 竞赛

思路分析

和昨晚T4一样的套路。。

不过由于这里要求子序列不相邻,我们考虑维护四个值

ma 左右端点都不包含的最大子序列和

lma 左端点没限制,右端点不包含的最大子序列和

rma 右端点没限制,左端点一定不包含的最大子序列和

lrma 左右端点都没限制的最大子序列和

然后我们只需实现单点修改和递归建树

每次修改后,根节点的lrma即为答案

单点修改的逻辑见代码

时间复杂度O(nlogn)

AC代码

using i64 = long long;
const int N = 5e4 + 10, mod = 1e9 + 7;
struct node {
    int l, r;
    i64 ma, lma, rma, lrma;
} tr[N << 2];

void pushup (node& t, node& l, node& r) {
    t.ma = max(l.rma + r.ma, l.ma + r.lma);
    t.lma = max(l.lma + r.lma, l.lrma + r.ma);
    t.rma = max(l.rma + r.rma, l.ma + r.lrma);
    t.lrma = max(l.lrma + r.rma, l.lma + r.lrma);
}
#define lc p << 1
#define rc p << 1 | 1
void build (int p, int l, int r, vector<int>& a) {
    tr[p] = { l, r };
    if (l == r) {
        tr[p] = { l, l, 0, 0, 0, max(a[l - 1], 0) };
        return;
    }
    int mid = l + r >> 1;
    build(lc, l, mid, a), build(rc, mid + 1, r, a);
    pushup(tr[p], tr[lc], tr[rc]);
}

void update (int p, int x, int v) {
    if (tr[p].l == x && tr[p].r == x) {
        tr[p] = { x, x, 0, 0, 0, max(0, v) };
        return;
    }
    int mid = tr[p].l + tr[p].r >> 1;
    if (x <= mid) update(lc, x, v);
    else update(rc, x, v);
    pushup(tr[p], tr[lc], tr[rc]);
}

#undef lc
#undef rc

class Solution {
public:
    int maximumSumSubsequence(vector<int>& nums, vector<vector<int>>& queries) {
        int n = nums.size();
        build(1, 1, n, nums);
        i64 res = 0;
        for (auto& v : queries) {
            update(1, v[0] + 1, v[1]);
            res = (res + tr[1].lrma) % mod;
        }
        return res;
    }
};

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

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

相关文章

GDPU JavaWeb mvc模式

搭建一个mvc框架的小实例。 简易计算器 有一个名为inputNumber.jsp的页面提供一个表单&#xff0c;用户可以通过表单输入两个数和运算符号提交给Servlet控制器&#xff1b;由名为ComputerBean.java生成的JavaBean负责存储运算数、运算符号和运算结果&#xff0c;由名为handleCo…

qt-C++笔记之使用QtConcurrent异步地执行槽函数中的内容,使其不阻塞主界面

qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容&#xff0c;使其不阻塞主界面 code review! 参考博文&#xff1a; qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容&#xff0c;使其不阻塞主界面 qt-C笔记之QThread使用 文章目录 qt-C笔记之使用QtConcurrent异步地…

23种设计模式顺口溜

口诀&#xff1a; 原型 抽风 &#xff0c;单独 建造 工厂 &#xff08;寓意&#xff1a;&#xff08;这里代指本来很简单的东西&#xff0c;却要干工厂这里复杂的业务&#xff09; 抽风&#xff1a;抽象工厂单独&#xff1a;单例桥代理组合享元适配器&#xff0c;&#xff0…

【SpringBoot】SpringBoot中防止接口重复提交(单机环境和分布式环境)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 &#x1f33c;前言 &#x1f512;单机环境下防止接口重复提交 &#x1f4d5;导入依赖 &#x1f4c2;项目结构 &#x1f680;创建自定义注解 ✈创建AOP切面 &#x1f697;创建Conotroller &#x1f4bb;分布…

mysql实战——Mysql8.0高可用之双主+keepalived

一、介绍 利用keepalived实现Mysql数据库的高可用&#xff0c;KeepalivedMysql双主来实现MYSQL-HA&#xff0c;两台Mysql数据库的数据保持完全一致&#xff0c;实现方法是两台Mysql互为主从关系&#xff0c;通过keepalived配置VIP&#xff0c;实现当其中的一台Mysql数据库宕机…

YOLOv9改进策略 | 图像去雾 | 利用图像去雾网络UnfogNet辅助YOLOv9进行图像去雾检测(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是利用UnfogNet超轻量化图像去雾网络,我将该网络结合YOLOv9针对图像进行去雾检测(也适用于一些模糊场景),我将该网络结构和YOLOv9的网络进行结合同时该网络的结构的参数量非常的小,我们将其添加到模型里增加的计算量和参数量基本可…

2000 年至 2015 年中国(即水稻、小麦和玉米1km 网格)三种主要作物年收获面积的时空变化

摘要 可靠、连续的主要作物收获面积信息对于研究地表动态和制定影响农业生产、土地利用和可持续发展的政策至关重要。然而&#xff0c;中国目前还没有高分辨率的空间明确和时间连续的作物收获面积信息。全国范围内主要农作物收获面积的时空格局也鲜有研究。在本研究中&#xf…

家政服务|基于SprinBoot+vue的家政服务管理平台(源码+数据库+文档)

家政服务管理平台 目录 基于SprinBootvue的家政服务管理平台 一、前言 二、系统设计 三、系统功能设计 1前台模块设计 2后台功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 5.2.3服务人员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕…

Linux:进程地址空间、进程控制(一.进程创建、进程终止、进程等待)

上次介绍了环境变量&#xff1a;Linux&#xff1a;进程概念&#xff08;四.main函数的参数、环境变量及其相关操作&#xff09; 文章目录 1.程序地址空间知识点总结上述空间排布结构是在内存吗&#xff1f;&#xff08;进程地址空间引入&#xff09; 2.进程地址空间明确几个点进…

Java 对接百度网盘

文章目录 前言一、创建百度网盘账号二、代码实现1. 常量类2. 工具类3. 授权码模式授权4. 文件分片上传&#xff08;可获取进度&#xff09;--方法一5. 文件下载(可获取进度)--方法一6. 获取文件列表7. 文件分片上传&#xff08;不可获取进度&#xff09;--方法二7. 文件下载&am…

[数据集][目标检测]手枪机枪刀检测数据集VOC+YOLO格式5990张3类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5990 标注数量(xml文件个数)&#xff1a;5990 标注数量(txt文件个数)&#xff1a;5990 标注…

健身房会员管理系统服务预约小程序的作用是什么

拥有完美身材/减肥/锻炼等前往健身房是个不错的选择&#xff0c;商家生意开展需要吸引同城客户并转化&#xff0c;客户也有自己的判断需要找到更全面的场地&#xff1b;完善客户消费流程利于品牌发展和不断获客转化。 运用【雨科】平台搭建健身房管理系统小程序&#xff0c;多…

SpringBoot【1】集成 Druid

SpringBoot 集成 Druid 前言创建项目修改 pom.xml 文件添加配置文件开发 java 代码启动类 - DruidApplication配置文件-propertiesDruidConfigPropertyDruidMonitorProperty 配置文件-configDruidConfig 控制层DruidController 运行验证Druid 的监控应用程序 前言 JDK版本&…

html5网页-浏览器中实现高德地图定位功能

介绍 HTML5是当前Web开发中最常用的技术之一&#xff0c;而地图应用又是其中一个非常常见的需求。高德地图是国内最受欢迎的地图服务提供商之一&#xff0c;他们提供了一系列的API&#xff0c;方便开发者在自己的网站或应用中集成地图功能。 接下来我们如何使用HTML5浏览器和高…

Unity开发——XLua热更新之Hotfix配置(包含xlua获取与导入)

一、Git上获取xlua 最新的xlua包&#xff0c;下载地址链接&#xff1a;https://github.com/Tencent/xLua 二、Unity添加xlua 解压xlua压缩包后&#xff0c;将xlua里的Assets里的文件直接复制进Unity的Assets文件夹下。 成功导入后&#xff0c;unity工具栏会出现xlua选项。 …

【C++提高编程-04】----C++之Vector容器实战

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

初步认识栈和队列

Hello&#xff0c;everyone&#xff0c;今天小编讲解栈和队列的知识&#xff01;&#xff01;&#xff01; 1.栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&…

Mysql 找出未提交事务的SQL及死锁

未提交事务&#xff1a; 通过查看information_schema.INNODB_TRX视图,您可以了解当前系统中正在运行的事务情况,从而进行问题排查和性能优化。 SELECT * FROM information_schema.innodb_trx; 通过trx_state为RUNNIG,trx_started判断是否有一直RUNNING的事务。 如果有未提交…

Linux修炼之路之冯系结构,操作系统

目录 一&#xff1a;冯诺依曼体系结构 1.五大组件 2.存储器存在的意义 3.几个问题 二&#xff1a;操作系统 接下来的日子会顺顺利利&#xff0c;万事胜意&#xff0c;生活明朗-----------林辞忧 一&#xff1a;冯诺依曼体系结构 我们当代的计算机的基本构成都是由冯诺依曼…