当前位置: 首页 > news >正文

第 361 场 LeetCode 周赛题解

A 统计对称整数的数目

在这里插入图片描述

枚举 x x x

class Solution {
public:int countSymmetricIntegers(int low, int high) {int res = 0;for (int i = low; i <= high; i++) {string s = to_string(i);if (s.size() & 1)continue;int s1 = 0, s2 = 0;for (int k = 0; k < s.size(); k++)if (k < s.size() / 2)s1 += s[k] - '0';elses2 += s[k] - '0';if (s1 == s2)res++;}return res;}
};

B 生成特殊数字的最少操作

在这里插入图片描述

双指针:则若字符串操作完后为 0 0 0 ,设字符串长为 n n n ,则需要 n n n n − 1 n-1 n1 (字符串中含 0)操作使得字符串变为 0 0 0 , 若字符串操作完后至少有两位数字,则其最后两位只能是 { 25 , 50 , 75 , 00 } \{25, 50, 75, 00\} {25,50,75,00} 其中之一,枚举可能的后两位,用双指针计算要得到当前枚举值的最少操作数

class Solution {
public:int minimumOperations(string num) {vector<string> tar{"25", "50", "75", "00"};int n = num.size();int res = num.find('0') == num.npos ? n : n - 1;for (auto &s: tar) {int i = s.size() - 1;int j = n - 1;int cur = 0;//得到当前枚举值的最少操作数for (; i >= 0 && j >= 0;) {if (s[i] == num[j]) {i--;j--;} else {j--;cur++;}}if (i < 0)res = min(res, cur);}return res;}
};

C 统计趣味子数组的数目

在这里插入图片描述
在这里插入图片描述

前缀和:设数组 l i li li 有: l i i = { 1 , n u m s [ i ] % m o d = k 0 , n u m s [ i ] % m o d ≠ k li_i=\left\{\begin{matrix} 1 & , nums[i]\%mod=k \\ 0 & , nums[i]\%mod\ne k \end{matrix}\right. lii={10,nums[i]%mod=k,nums[i]%mod=k,设 l i li li 上的前缀和为 p s i = ( ∑ j = 0 j < i l i i ) % m o d ps_i=(\sum_{j=0}^{j<i} li_i)\%mod psi=(j=0j<ilii)%mod ,设子数组 n u m s [ l , r ] nums[l,r] nums[l,r] 为趣味子数组,则有: ( p s r + 1 − p s l ) % m o d = k (ps_{r+1}-ps_{l})\%mod=k (psr+1psl)%mod=k,即有 p s l = ( ( p s r + 1 − k ) % m o d + m o d ) % m o d ps_l=((ps_{r+1}-k)\%mod+mod)\%mod psl=((psr+1k)%mod+mod)%mod

class Solution {
public:using ll = long long;long long countInterestingSubarrays(vector<int> &nums, int modulo, int k) {unordered_map<int, ll> cnt;//cnt[val]: 前缀和val出现的次数cnt[0] = 1;//前缀为空int s = 0;//当前前缀和ll res = 0;for (int i = 0; i < nums.size(); i++) {if (nums[i] % modulo == k)s = (s + 1) % modulo;int s_l = ((s - k) % modulo + modulo) % modulo;res += cnt[s_l];cnt[s]++;}return res;}
};

D 边权重均等查询

在这里插入图片描述
在这里插入图片描述

倍增+枚举:1)预处理:设 0 0 0 为树的根节点,枚举边的权重 w _ i d w\_id w_id,从树根开始 d f s dfs dfs ,计算各节点 u u u 到树根的路径上的边数 l e v e l [ u ] level[u] level[u],以及节点 u u u 到树根的路径上边权重为 w _ i d w\_id w_id 的边的数目 s [ u ] [ w _ i d ] s[u][w\_id] s[u][w_id],求倍增数组 p p p p [ u ] [ j ] p[u][j] p[u][j]为与 u u u 距离为 2 j 2^j 2j的祖先节点。2)对一个查询 ( a , b ) (a,b) (a,b),用倍增的方式求 a a a b b b 的最近公共祖先 c c c ,然后枚举 w _ i d w\_id w_id ,将 a a a b b b 间路径上的边的边权统一为 w _ i d w\_id w_id 的操作数为: ( l e v e l [ a ] − l e v e l [ c ] − ( s [ a ] [ w _ i d ] − s [ c ] [ w _ i d ] ) ) + ( l e v e l [ b ] − l e v e l [ c ] − ( s [ b ] [ w _ i d ] − s [ c ] [ w _ i d ] ) ) \left ( level[a] - level[c] - (s[a][w\_id] - s[c][w\_id]) \right ) + \left ( level[b] - level[c] - (s[b][w\_id] - s[c][w\_id]) \right ) (level[a]level[c](s[a][w_id]s[c][w_id]))+(level[b]level[c](s[b][w_id]s[c][w_id]))

class Solution {
public:vector<int> minOperationsQueries(int n, vector<vector<int>> &edges, vector<vector<int>> &queries) {vector<pair<int, int>> e[n];//邻接表int mx_w = 0, mn_w = INT32_MAX;//最大权重、最小权重for (auto &ei: edges) {e[ei[0]].emplace_back(ei[1], ei[2]);e[ei[1]].emplace_back(ei[0], ei[2]);mx_w = max(mx_w, ei[2]);mn_w = min(mn_w, ei[2]);}int level[n], s[n][27];int p[n][15];function<void(int, int, int, int, int)> dfs = [&](int cur, int par, int lev, int sum, int w_id) {if (w_id == mn_w)//倍增数组一轮dfs即可计算for (int i = 0; i < 15; i++)p[cur][i] = i != 0 ? p[p[cur][i - 1]][i - 1] : par;level[cur] = lev;s[cur][w_id] = sum;for (auto &[j, w]: e[cur])if (j != par)dfs(j, cur, lev + 1, w == w_id ? sum + 1 : sum, w_id);};for (int i = mn_w; i <= mx_w; i++)//枚举w_iddfs(0, 0, 0, 0, i);vector<int> res;res.reserve(queries.size());for (auto &qi: queries) {int a = qi[0], b = qi[1];if (a == b) {res.push_back(0);continue;}if (level[a] < level[b])swap(a, b);int c = a;//c最终为a和b的最近公共祖先for (int step = level[a] - level[b], ind = 0; step >= (1 << ind); ind++)if (step >> ind & 1)c = p[c][ind];if (c != b) {int b_ = b;for (int ind = 14; ind >= 0; ind--) {if (p[c][ind] != p[b_][ind]) {c = p[c][ind];b_ = p[b_][ind];}}c = p[c][0];}int res_i = INT32_MAX;for (int w_id = mn_w; w_id <= mx_w; w_id++) {//枚举w_idint t1 = level[a] - level[c] - (s[a][w_id] - s[c][w_id]);int t2 = level[b] - level[c] - (s[b][w_id] - s[c][w_id]);res_i = min(res_i, t1 + t2);}res.push_back(res_i);}return res;}
};

相关文章:

第 361 场 LeetCode 周赛题解

A 统计对称整数的数目 枚举 x x x class Solution { public:int countSymmetricIntegers(int low, int high) {int res 0;for (int i low; i < high; i) {string s to_string(i);if (s.size() & 1)continue;int s1 0, s2 0;for (int k 0; k < s.size(); k)if …...

07-架构2023版-centos+docker部署Canal 实现多端数据同步

canal 工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )canal 解析 binary log 对象(原始为 byte 流)基于日志增量订阅和消费的业务包括 数据库镜…...

过滤器的应用-Filter

过滤器 1.工作原理 2.创建Filter 2.1通过注解的方式实现 //创建一个类&#xff0c;实现Filter接口 WebFilter(urlPatterns "/myfilter") //urlPatterns表示需要拦截的路径 public class MyFilter implements Filter {Overridepublic void doFilter(ServletReques…...

leetcode236. 二叉树的最近公共祖先(java)

二叉树的最近公共祖先 题目描述递归法代码演示 上期经典 题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q …...

spacy安装旧版本en_core_web_sm的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

Qt +VTK+Cmake 编译和环境配置(第一篇 采坑)

VTK下载地址&#xff1a;https://vtk.org/download/ cmake下载地址&#xff1a;https://cmake.org/download/ 版本对应方面&#xff0c;如果你的项目对版本没有要求&#xff0c;就不用在意。我就是自己随机搭建的&#xff0c;VTK选择最新版本吧&#xff0c;如果后面其他的库不…...

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南宁师范大学图书馆

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南宁师范大学图书馆...

C++/C# : C#和C++的不同

C#和C是两种不同的编程语言&#xff0c;虽然在某些方面它们具有相似之处&#xff0c;但它们也有一些明显的不同点&#xff0c;如下&#xff1a; C是一种静态类型编程语言&#xff0c;而C#是一种动态类型编程语言。 C允许开发者手动管理内存的分配和释放&#xff0c;但是C#的垃…...

PCL-直通滤波器原理及实验

文章目录 原理使用过程代码实验总结 原理 直通滤波器的作用是过滤在指定维度方向上取值不在给定值域内的点&#xff0c;即点云数据有xyz三维坐标&#xff0c;选择一个方向的维度的数据&#xff0c;设置一个范围&#xff0c;在这个范围中的点云会被保留&#xff0c;不在此范围内…...

数学建模:相关性分析

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 数学建模&#xff1a;相关性分析 文章目录 数学建模&#xff1a;相关性分析相关性分析两变量的相关分析PearsonSpearmanKendall tua-b 双变量关系强度测量的指标相关系数的性质代码实现example偏相关分析 相…...

thinkPHP项目搭建

1 宝塔添加站点 &#xff08;1&#xff09;打开命令提示行&#xff0c;输入以下命令&#xff0c;找到hosts文件。 for /f %P in (dir %windir%\WinSxS\hosts /b /s) do copy %P %windir%\System32\drivers\etc & echo %P & Notepad %P &#xff08;2&#xff09;添加域…...

C++中几种处理函数返回值的方式

目录 C中几种处理函数返回值的方式&#xff1a;值返回引用返回指针返回总结 C中几种处理函数返回值的方式&#xff1a; 值返回 函数可以返回一个具体的值&#xff0c;例如整数、浮点数、结构体、类对象等。返回值被复制到函数调用点&#xff0c;在调用点可以直接使用或赋给其…...

跟我学c++中级篇——c++中的Abominable Function Types

一、Abominable Function Types Abominable Function Types,令人讨厌&#xff08;憎恶&#xff09;的函数类型。这个在c的技术点中&#xff0c;很少有人了解。那么什么是Abominable Function Types呢&#xff1f;看下面的例子&#xff1a; using func void(); using func…...

计算机毕设之基于python+django+mysql的影片数据爬取与数据分析(包含源码+文档+部署教程)

影片数据爬取与数据分析分为两个部分&#xff0c;即管理员和用户。该系统是根据用户的实际需求开发的&#xff0c;贴近生活。从管理员处获得的指定账号和密码可用于进入系统和使用相关的系统应用程序。管理员拥有最大的权限&#xff0c;其次是用户。管理员一般负责整个系统的运…...

slog正式版来了:Go日志记录新选择!

在大约一年前&#xff0c;我就写下了《slog&#xff1a;Go官方版结构化日志包[1]》一文&#xff0c;文中介绍了Go团队正在设计并计划在下一个Go版本中落地的Go官方结构化日志包&#xff1a;slog[2]。但slog并未如预期在Go 1.20版本[3]中落地&#xff0c;而是在golang.org/x/exp…...

华为静态路由配置实验(超详细讲解+详细命令行)

系列文章目录 华为数通学习&#xff08;7&#xff09; 前言 一&#xff0c;静态路由配置 二&#xff0c;网络地址配置 AR1的配置&#xff1a; AR2的配置&#xff1a; AR3的配置&#xff1a; 三&#xff0c;测试是否连通 AR1的配置: 讲解&#xff1a; AR2的配置&#…...

axios源码学习

1 判断一个对象是否普通对象 Symbol.toStringTag&#xff1a;可以修改Object.prototype.toString.call返回的后缀&#xff0c;普通对象自带该属性&#xff0c;不需要设置&#xff0c;如果设置说明该对象不是普通对象Symbol.iterator&#xff1a;拥有该属性的对象可以使用for o…...

【SpingBoot】详细介绍SpringBoot项目中前端请求到数据库再返回前端的完整数据流转,并用代码实现

在SpringBoot项目中&#xff0c;前端请求到最终返回的完整数据流转一般包括以下几个步骤&#xff1a; 前端发送HTTP请求到后端Controller。 Controller接收到请求后&#xff0c;调用相关Service处理业务逻辑。 Service调用DAO层获取数据。 DAO层访问数据库获取数据。 数据库…...

kubesphere devops使用

一、创建项目 1 创建项目 企业管理员切换到相应企业空间(租户),创建项目&#xff0c;k8s集群会创建一个相同名字的namespace。如下图所示管理员创建一个ipaas-devops项目。 2.创建镜像拉取密钥信息 进入项目如ipaas-devops&#xff0c;选择配置->保密字典->创建&#xf…...

Selenium如何用于编写自动化测试脚本?

Selenium如何用于编写自动化测试脚本&#xff1f;它提供了许多测试工具和API&#xff0c;可以与浏览器交互&#xff0c;模拟用户操作&#xff0c;检查网页的各个方面。下面是一些步骤&#xff0c;可以帮助你编写Selenium自动化测试脚本。 1、安装Selenium库和浏览器驱动程序 首…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?

FTP&#xff08;File Transfer Protocol&#xff09;本身是一个基于 TCP 的协议&#xff0c;理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况&#xff0c;主要原因包括&#xff1a; ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...