LeetCode 第400场周赛个人题解

100307. 候诊室中的最少椅子数

原题链接

100307. 候诊室中的最少椅子数

思路分析

直接模拟

时间复杂度:O(n)

AC代码

class Solution:def minimumChairs(self, s: str) -> int:cur = res = 0for x in s:if x == 'E':cur += 1else:cur -= 1res = max(res, cur)return res

100311. 无需开会的工作日

原题链接

100311. 无需开会的工作日

思路分析

区间合并类问题,区间合并后得到若干不相交的区间,数轴上没有被区间覆盖的长度和就是答案

结尾空隙别忘记加

时间复杂度O(nlogn)

AC代码

class Solution:def countDays(self, days: int, meetings: List[List[int]]) -> int:meetings.sort(key=lambda x: x[0])ed = res = 0for l, r in meetings:if l > ed:res += min(l, days) - ed - 1ed = relse:ed = max(ed, r)res += max(0, days - ed)return res


100322. 删除星号以后字典序最小的字符串

原题链接

100322. 删除星号以后字典序最小的字符串

思路分析

直接顺序遍历,维护每个小写字母的出现下标集合

遇到星号就把当前出现的字典序最小的字母的最右左边打标记

最终返回原字符串中除去打标记和'*'的部分

时间复杂度:O(nU)

AC代码

class Solution:def clearStars(self, s: str) -> str:n = len(s)vis = [False] * nst = [[] for _ in range(26)]for i, x in enumerate(s):if x == '*':for j in range(26):if st[j]:vis[st[j][-1]] = Truest[j].pop()breakvis[i] = Trueelse:st[ord(x) - ord('a')].append(i)return ''.join([s[i] for i in range(n) if not vis[i]])

100315. 找到按位与最接近 K 的子数组

原题链接

100315. 找到按位与最接近 K 的子数组

思路分析

没想到好方法,用的线段树+二分

因为固定左端点的前缀与越靠右越小

我们枚举左端点,二分出第一个大于等于 k 的右端点,然后下一个下标就是第一个小于k的右端点,二者贡献出的两个绝对差来对答案进行维护

时间复杂度O(n log^2 n)

应该有更好的方法,比如按位拆分?赛后看下题解区吧


2024.06.02 12:43  吃完饭回来,看评论区说是原题,而且那原题我还做过……去年做的忘了都

F2 ST表+二分

比线段树少个log,跑了300ms

F3 倒序遍历+原地去重

因为所有位置任意长度后缀按位与的值的数目为log级别的,所以我们倒序遍历维护后缀按位与的集合即可,且因为按位与单调递减,我们可以原地去重来维护

这个方法最快,是150ms

AC代码

#define lc p << 1
#define rc p << 1 | 1
constexpr int N = 1e5 + 10;
int tr[N * 4];
// 向上更新
void pushup(int p)
{tr[p] = tr[lc] & tr[rc];
}void build(int p, int l, int r, vector<int>& a)
{tr[p] = a[l];if (l == r)return;int mid = (l + r) >> 1;build(lc, l, mid, a);build(rc, mid + 1, r, a);pushup(p);
}int query(int p, int l, int r, int L, int R)
{if (L <= l && r <= R)return tr[p];int mid = l + r >> 1, res = (1 << 30) - 1;if (L <= mid)res &= query(lc, l, mid, L, R);if (R > mid)res &= query(rc, mid + 1, r, L, R);return res;
}
#undef lc
#undef rc
class Solution {
public:int minimumDifference(vector<int>& a, int k) {int n = a.size();build(1, 0, n - 1, a);int res = abs(tr[1] - k);for (int i = 0; i < n; i ++ ) {int l = i, r = n - 1, ans = -1;while (l <= r) {int mid = l + r >> 1;if (query(1, 0, n - 1, i, mid) >= k)ans = mid, l = mid + 1;else r = mid - 1;} if (ans == -1) {l = r = i;// cout << a[i] << '\n';res = min(res, abs(a[i] - k));continue;}l = ans, r = min(n - 1, ans + 1);// cout << query(1, 0, n - 1, i, r) << " " << query(1, 0, n - 1, i, l) << '\n';res = min(res, min(abs(query(1, 0, n - 1, i, r) - k), abs(query(1, 0, n - 1, i, l) - k)));}return res;}
};

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

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

相关文章

Vue3项目练习详细步骤(第二部分:主页面搭建)

主页面搭建 页面主体结构 路由 子路由 主页面搭建 页面主体结构 在vuews目录下新建Layout.vue文件 主页面内容主体代码 <script setup> import {Management,Promotion,UserFilled,User,Crop,EditPen,SwitchButton,CaretBottom } from element-plus/icons-vue imp…

Dante Cloud 是国内首个支持阻塞式和响应式融合的微服务

Dante Cloud 是国内首个支持阻塞式和响应式融合的微服务。以「高质量代码、低安全漏洞」为核心&#xff0c;采用领域驱动模型(DDD)设计思想&#xff0c;完全基于 Spring 生态全域开源技术和 OAuth2.1 协议&#xff0c;支持智能电视、IoT等物联网设备认证&#xff0c;满足国家三…

YOLOv5改进(六)--引入YOLOv8中C2F模块

文章目录 1、前言2、C3模块和C2F模块2.1、C3模块2.2、BottleNeck模块2.3、C2F模块 3、C2F代码实现3.1、common.py3.2、yolo.py3.3、yolov5s_C2F.yaml 4、目标检测系列文章 1、前言 本文主要使用YOLOv8的C2F模块替换YOLOv5中的C3模块&#xff0c;经过实验测试&#xff0c;发现Y…

SwiftUI调用相机拍照

在 SwiftUI 中实现拍照功能&#xff0c;需要结合 UIViewControllerRepresentable 和 UIImagePickerController 来实现相机功能。下面是一个详细的示例&#xff0c;展示如何使用 SwiftUI 来实现拍照功能&#xff1a; 1. 创建一个 ImagePicker 组件 首先&#xff0c;创建一个 U…

C++之类的三种继承修饰符(public、private、protected)总结

1、前言 前文博客介绍了修饰符public、private、protected在类中成员变量和函数访问权限限制的总结&#xff0c;主要如下&#xff1a; public&#xff08;公有&#xff09;: 公有成员在类的内部和外部都可以被访问。 private&#xff08;私有&#xff09;: 私有成员只能在类的内…

Qt xml学习之calculator-qml

1.功能说明&#xff1a;制作简易计算器 2.使用技术&#xff1a;qml,scxml 3.项目效果&#xff1a; 4.qml部分&#xff1a; import Calculator 1.0 //需要引用对应类的队友版本 import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 1.4 import QtScxml…

Linux 的权限

目录 Linux 的用户 root 用户 和 普通用户 如何新建普通用户&#xff1f; 如何切换用户&#xff1f; 一开始是以 root 用户登录&#xff1a; 一开始以普通用户登录&#xff1a; 如何删除用户&#xff1f; Linux文件权限 什么是读权限&#xff08; r &#xff09;&#…

牛客网输入输出11道题——python3版本

目录 1 介绍2 训练3 参考 1 介绍 本博客用来记录python3版本的常见输入输出。 2 训练 题目1&#xff1a;AB(1) python3代码如下&#xff0c; import sys for line in sys.stdin:a, b map(int, line.split())print(ab)题目2&#xff1a;AB(2) python3代码如下&#xff0c…

vs2019 c++20 规范的 STL 库的智能指针 shared、unique 、weak 、auto 及 make_** 函数的源码注释汇总,和几个结论

智能指针的源码都在 《memory》 头文件中。因为头文件太长&#xff0c;再者本次整理是基于以前的零散的模板分析。故相当于抽取了该头文件中关于智能指针的源码进行分析&#xff0c;注释。 &#xff08;1 探讨一&#xff09;当独占指针指向数组时&#xff0c;其默认的删除器是…

Python3 逻辑运算符

前言 本文主要介绍python中的逻辑运算符&#xff0c;主要内容包括逻辑运算符简介、逻辑运算符优先级。 文章目录 前言一、逻辑运算符简介1、and(与) 运算2、or(或)运算3、not(非)运算 二、逻辑运算符优先级总结 一、逻辑运算符简介 逻辑运算符是用来做逻辑运算&#xff0c; …

13.RedHat认证-Linux Shell脚本

13.RedHat认证-Linux Shell脚本 Shell是一种脚本语言&#xff0c;那么&#xff0c;就必须有解释器来执行这些脚本。 bash&#xff1a;是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成&#xff0c;是BourneAgain Shell的缩写 sh&#xff1a;由Steve Bourne开发…

用大白话讲懂ceph与clinder的区别

Ceph是一个大仓库&#xff0c;而clinder只是食堂openstack的一个存储组件 详细解释如下&#xff1a; 当我们需要存储大量数据的时候&#xff0c;比如照片、视频、文件等&#xff0c;Ceph就像是一个巨大的仓库&#xff0c;可以帮助我们把这些数据安全地存放起来。 Ceph与传统的…

ABP框架+Mysql(二)

展示页面--图书列表页面 本地化 开始的UI开发之前,我们首先要准备本地化的文本(这是你通常在开发应用程序时需要做的).本地化文本在前端页面会常用。 本地化文本位于 Acme.BookStore.Domain.Shared 项目的 Localization/BookStore 文件夹下: 打开 en.json (英文翻译)文件并更…

STM32-- GPIO->EXTI->NVIC中断

一、NVIC简介 什么是 NVIC &#xff1f; NVIC 即嵌套向量中断控制器&#xff0c;全称 Nested vectored interrupt controller 。它 是内核的器件&#xff0c;所以它的更多描述可以看内核有关的资料。M3/M4/M7 内核都是支持 256 个中断&#xff0c;其中包含了 16 个系统中…

MySQL—函数—数值函数(基础)

一、引言 首先了解一下常见的数值函数哪些&#xff1f;并且直到它们的作用&#xff0c;并且演示这些函数的使用。 二、数值函数 常见的数值函数如下&#xff1a; 注意&#xff1a; 1、ceil(x)、floor(x) &#xff1a;向上、向下取整。 2、mod(x,y)&#xff1a;模运算&#x…

Kmeans聚类模型

K均值(K-Means)聚类是一种常用的无监督学习算法,用于将数据集中的样本划分为K个不同的簇(cluster),使得每个样本都属于距离最近的簇的中心。K均值聚类的目标是通过最小化簇内样本的方差或欧氏距离的平方和来确定簇的中心,从而实现聚类分析。 一、Kmeans聚类模型原理 随…

CTF本地靶场搭建——GZ:CTF基础使用

GZ::CTF 是一个基于 ASP.NET Core 的开源 CTF 平台。 简介 GZ::CTF 是一个基于 ASP.NET Core 的开源 CTF 平台&#xff0c;采用 Docker 或 K8s 作为容器部署后端&#xff0c;提供了可自定义的题目类型、动态容器和动态分值功能。 本项目缘起于作者认为 CTFd 的实现不优雅&a…

Photoshop 首选项设置建议

Windows Ps菜单&#xff1a;编辑/首选项 Edit/Preferences 快捷键&#xff1a;Ctrl K macOS Ps菜单&#xff1a;Photoshop/首选项 Photoshop/Preferences 快捷键&#xff1a;Cmd K 对 Photoshop 的首选项 Preferences进行设置&#xff0c;可以提高修图与设计效率。下面是一些…

burp插件new_xp_capcha识别验证码的简易安装

1.new_xp_capcha 插件是大佬开发的可以正常白嫖&#xff0c;感谢大佬&#xff0c;我找了个不需要任何高级操作就可以做的安装手法&#xff0c;因为我在网上搜了一下就发现这个的安装过程攻略都还蛮复杂&#xff0c;我这里用了个简单的手法 2.安装 下载地址&#xff1a;smxia…

用Python获取Windows本机安装的所有应用程序的实现与分析

一个项目中需要获取本机安装的所有应用程序列表&#xff0c;花了一点时间研究了一下&#xff0c;分享出来。 主要通过访问注册表和桌面快捷方式来完成这一任务&#xff0c;因为注册表中获取到的应用程序列表不完全&#xff0c;因此通过桌面快捷方式进行补充。 导入所需模块 im…