第 373 场 LeetCode 周赛题解

A 循环移位后的矩阵相似检查

模拟

class Solution {
public:bool areSimilar(vector<vector<int>> &mat, int k) {int m = mat.size(), n = mat[0].size();k %= n;auto g = mat;for (int i = 0; i < m; i++)if (i & 1)rotate(mat[i].begin(), mat[i].begin() + n - k, mat[i].end());elserotate(mat[i].begin(), mat[i].begin() + k, mat[i].end());return g == mat;}
};

B 统计美丽子字符串 I

在这里插入图片描述

前缀和:枚举子数组,用前缀和记录当前子数组的元音字符数

class Solution {
public:int beautifulSubstrings(string s, int k) {int n = s.size();unordered_set<char> vo{'a', 'e', 'i', 'o', 'u'};vector<int> sv(n + 1);for (int i = 0; i < n; i++)sv[i + 1] = vo.count(s[i]) ? sv[i] + 1 : sv[i];int res = 0;for (int l = 0; l < n; l++)for (int r = l; r < n; r++)if (auto v = sv[r + 1] - sv[l];v * 2 == r - l + 1 && v * v % k == 0)res++;return res;}
};

C 交换得到字典序最小的数组

在这里插入图片描述

排序: 排序后的 n u m s nums nums 可以划分成若干子数组,其中每个子数组中相邻元素之差不超过 l i m i t limit limit ,可以通过交换得到的字典序最小的数组即为:每个子数组在原数组所在位置上按非降序排序 得到的数组

class Solution {
public:vector<int> lexicographicallySmallestArray(vector<int> &nums, int limit) {int n = nums.size();vector<pair<int, int>> li(n);for (int i = 0; i < n; i++)li[i] = {i, nums[i]};sort(li.begin(), li.end(), [](pair<int, int> &x, pair<int, int> &y) { return x.second < y.second; });//按值排序for (int i = 0, j = 0; i < n; i = ++j) {while (j + 1 < n && li[j + 1].second - li[j].second <= limit)//找到当前分组的右边界j++;vector<pair<int, int>> t{li.begin() + i, li.begin() + j + 1};sort(li.begin() + i, li.begin() + j + 1);//按原数组中下标排序for (int k = i; k <= j; k++)nums[li[k].first] = t[k - i].second;}return nums;}
};

D 统计美丽子字符串 II

在这里插入图片描述

前缀和 + 哈希:设 v k v_{k} vk 表示 s s s 长为 k k k 的前缀中的元音字符数,设 c k c_{k} ck 表示 s s s 长为 k k k 的前缀中的非元音字符数,若 s [ l , r ] s[l,r] s[l,r] 为美丽子字符串,则有 v r + 1 − v l = c r + 1 − c l v_{r+1}-v_{l}=c_{r+1}-c_{l} vr+1vl=cr+1cl , 即 v r + 1 − c r + 1 = v l − c l v_{r+1}-c_{r+1}=v_{l}-c_{l} vr+1cr+1=vlcl ,且 ( v r + 1 − v l ) 2 % k = 0 (v_{r+1}-v_{l})^2\%k=0 (vr+1vl)2%k=0 ,不妨设 w = v r + 1 − v l w=v_{r+1}-v_{l} w=vr+1vl,则 v l ≡ v r + 1 − w ( m o d k ) v_l \equiv v_{r+1}-w (mod\;k) vlvr+1w(modk),所以前面出现过的满足 v l − c l v_{l}-c_{l} vlcl v l ≡ v r + 1 − w ( m o d k ) v_l \equiv v_{r+1}-w (mod\;k) vlvr+1w(modk) l l l 可以使 s [ l , r ] s[l,r] s[l,r] 为美丽子字符串

class Solution {
public:using ll = long long;long long beautifulSubstrings(string s, int k) {vector<int> li;for (int i = 0; i < k; i++)if (i * i % k == 0)li.push_back(i);map<pair<int, int>, int> cnt;unordered_set set_vo{'a', 'e', 'i', 'o', 'u'};cnt[{0, 0}] = 1;ll res = 0;for (int i = 0, v = 0, c = 0; i < s.size(); i++) {if (set_vo.count(s[i]))v++;elsec++;for (auto w: li) {auto vl = ((v - w) % k + k) % k;if (auto it = cnt.find({v - c, vl});it != cnt.end())res += it->second;}cnt[{v - c, v % k}]++;}return res;}
};

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

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

相关文章

Nodejs 第二十章(fs 上)

概述 在 Node.js 中&#xff0c;fs 模块是文件系统模块&#xff08;File System module&#xff09;的缩写&#xff0c;它提供了与文件系统进行交互的各种功能。通过 fs 模块&#xff0c;你可以执行诸如读取文件、写入文件、更改文件权限、创建目录等操作&#xff0c;Node.js …

算法通关村-----字符串冲刺题

最长公共前缀 问题描述 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀&#xff0c;返回空字符串 “”。详见leetcode14 问题分析 直观上来看&#xff0c;有竖直和水平两种方式&#xff0c;竖直方式是指我们依次比较所有字符串的第一个字符&#xff0c;…

c语言实现10进制转16进制

代码如下&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int dectohex(int b, char array[]) {char a[17] { "0123456789ABCDEF" };int c[30] { 0 }, i 0, base 16, j 0;while (b){c[i] b % base;b b / base;}j i;for (i--; i >…

03-《人月神话》巴赫、UML和领域驱动设计伪创新:中译本纠错及联想

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 2001年&#xff0c;我们翻译《人月神话》的时候&#xff0c;由于水平有限&#xff0c;译文中存在不少错误。 这些年&#xff0c;随着阅历的增长&#xff0c;在重读的时候偶尔也会有“…

电商项目高级篇-03 商品上架

商品上架 1、商品上架1.1、设计&#xff1a;宽表设计 1、商品上架 上架的商品才可以在网站展示。 上架的商品需要可以被检索。 1.1、设计&#xff1a;宽表设计 优点&#xff1a;方便检索 缺点&#xff1a;数据冗余 商品数据模型设计&#xff1a; PUT product {"mappi…

【PyQt】QPixmap与numpy.array互转

这里给出QPixmap→numpy.ndarray的两条转换(一个是使用PIL.Image而另一个不用)&#xff0c; 以及numpy.ndarray→QPixmap两条转换(同样也是用不用PIL.Image的区别)。 代码运行结果&#xff1a; from PyQt5.QtCore import QPoint,QRect,Qt from PyQt5.QtWidgets import QLabel …

微信小程序 服务端返回富文本,图片无法显示

场景&#xff1a;   微信小程序开发中&#xff0c;需要从服务端拿取数据渲染到页面上&#xff0c;后台返回的富文本里&#xff0c;图片路径有时是没有带域名前缀的&#xff0c;导致图片无法正常显示。 解决方案&#xff1a;   在富文本返回时&#xff0c;用正则匹配&#…

『OPEN3D』1.8 点云的配准理论

点云的配准是将不同的3D点云对齐成一个完成的点云模型&#xff1b;配准的目标是找到两帧点云之间的相对旋转&#xff08;rotation&#xff09;与平移&#xff08;translation&#xff09;&#xff0c;使得两份点云中有重叠的区域能够完好拼接。 点云配准示例图&#xff08;来自…

JPA 方式实现 RESTful API

除了常见的方式实现 RESTful API&#xff0c;还有一种简单的方式实现 RESTful API&#xff0c;那就是用 JPA 方式。首先介绍一下 JPA&#xff0c;它是 Sun 公司推荐的 JAVA 持久化规范&#xff0c;为了简化 ORM 技术而产生。需要注意的是&#xff0c;他只是一套规范&#xff0c…

HarmonyOS4.0系列——02、汉化插件、声明式开发范式ArkTS和类web开发范式

编辑器调整 我们在每次退出编辑器后再次打开会直接进入项目文件中&#xff0c;这样在新建项目用起来很是不方便&#xff0c;所以这里跟着设置一下就好 这样下次进入就不会直接跳转到当时的文件项目中&#xff01;&#xff01; 关于汉化 settings → plugins → installe…

什么是 Jest ? Vue2 如何使用 Jest 进行单元测试?Vue2 使用 Jest 开发单元测试实例

什么是Jest? Jest 是一个流行的 JavaScript 测试框架,由 Facebook 开发并维护,专注于简单性和速度。它通常用于编写 JavaScript 和 TypeScript 应用程序的单元测试、集成测试和端到端测试。 特点: 简单易用: Jest 提供简洁的 API 和易于理解的语法,使得编写测试用例变得…

【数据结构】什么是队列?

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 &#x1f4cc;队列的定义 &#x1f4cc;队列的抽象数据类型 &#x1f4cc;队列的顺序存储结构 &#x1f4cc;队列的链式存储结构 结语 人生,是一个又一个小小的队列…

探索网络模型与协议:从OSI到HTTPs的原理解析

一、OSI网络模型 OSI&#xff08;Open Systems Interconnection&#xff09;七层网络参考模型和TCP/IP四层模型都是用于理解和设计计算机网络的框架&#xff0c;但它们之间存在一些差异。 1、七层 vs 四层 OSI七层网络参考模型&#xff1a; 物理层&#xff08;Physical Laye…

人力资源管理后台 === 权限应用

目录 1.权限应用-拆分静态路由-动态路由 2.权限应用-根据用户权限添加动态路由 3.权限应用-根据权限显示左侧菜单 4.权限应用-退出登录重置路由 5.权限应用-功能权限-按钮权限标识 6.权限应用-自定义指令应用功能权限 7.其他模块-集成 8.首页-基本结构和数字滚动 9.首页…

17.找出1000之内的所有完数。

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 前言 本系列为循环结构编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 一个数如果恰好等于它的因子之和&#xff0c;这个数就称为“完数”。例如&#xff0c;⑥的因子为1、2、3&#xff0c;而…

vue3+ts mitt的使用

安装mitt :npm i mitt -Smain.ts: import mitt from mittconst Mit mitt();declare module vue {export interface ComponentCustomProperties{$Bus:typeof Mit} } app.config.globalProperties.$BusMit在A组件中使用 <template><div><h1>我是A<…

【深度学习】如何找到最优学习率

经过了大量炼丹的同学都知道&#xff0c;超参数是一个非常玄乎的东西&#xff0c;比如batch size&#xff0c;学习率等&#xff0c;这些东西的设定并没有什么规律和原因&#xff0c;论文中设定的超参数一般都是靠经验决定的。但是超参数往往又特别重要&#xff0c;比如学习率&a…

建造者模式-C语言实现

UML类图&#xff1a; 代码实现&#xff1a; #include <stdio.h> #include <stdlib.h>// 产品类 typedef struct {char* part1;char* part2;char* part3; } Product;// 抽象建造者类 typedef struct {void (*buildPart1)(void*, const char*);void (*buildPart2)(v…

RabbitMQ之延迟消息实战

RabbitMQ之延迟消息实战 使用死信交换机实现延迟消息 使用死信交换机的过期时间以及没有消费者进行消费&#xff0c;时间到了就会到死信队列中&#xff0c;由此可以实现延迟消息使用延迟消息插件 前提&#xff1a;需要mq配置插件 延时信息案例实战 把一个30分钟的延迟消息可以…

前端review

关于实时预览vs code中的颜色代码需要安装的插件&#xff0c;包括html文件格式中的颜色代码安装Flutter Color插件 VSCode 前端常用插件集合 1.Auto Close Tag自动闭合HTML/XML标签 2.Auto Rename Tag自动完成另一侧标签的同步修改 3.Beautify格式化代码&#xff0c;值得注…