第390场 LeetCode 周赛题解

A 每个字符最多出现两次的最长子字符串

在这里插入图片描述

滑动窗口:枚举窗口的左边界,尽可能右移窗口的右边界。 (当然也可以暴力枚举)

class Solution {
public:int maximumLengthSubstring(string s) {vector<int> cnt(26);int res = 0;for (int l = 0, r = -1, n = s.size();; cnt[s[l++] - 'a']--) {while (r + 1 < n && cnt[s[r + 1] - 'a'] + 1 <= 2)cnt[s[++r] - 'a']++;res = max(res, r - l + 1);if (r == n - 1)break;}return res;}
};

B 执行操作使数据元素之和大于等于 K

在这里插入图片描述

枚举:容易知道存在一种方案:“先通过第一种操作将数组从 [ 1 ] [1] [1] 变为 [ i ] [i] [i] ,再通过第二种操作让数组和不小于 k k k” 可以让操作数最少。枚举 i i i 以计算最小操作数

class Solution {
public:int minOperations(int k) {int res = INT32_MAX;for (int i = 1; i <= k; i++)res = min(res, i - 1 + (k - 1) / i);return res;}
};

C 最高频率的 ID

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

最大堆+哈希:用最大堆维护当前频率最高的ID,用哈希表记录各ID的最新频率

class Solution {
public:using ll = long long;vector<long long> mostFrequentIDs(vector<int> &nums, vector<int> &freq) {priority_queue<pair<ll, int>> heap;//(freq,id)unordered_map<int, ll> f;vector<ll> res;for (int i = 0; i < nums.size(); i++) {f[nums[i]] += freq[i];heap.emplace(f[nums[i]], nums[i]);while (f[heap.top().second] != heap.top().first)heap.pop();res.push_back(heap.top().first);}return res;}
};

D 最长公共后缀查询

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

字典树:遍历 wordsContainer 中的字符串,并将其按后缀插入字典树,同时更新字典树插入路径上的标记。然后遍历 wordsQuery ,在字典树上查询匹配的最长后缀的标记

class Solution {
public:vector<int> stringIndices(vector<string> &wordsContainer, vector<string> &wordsQuery) {trie tree;for (int i = 0; i < wordsContainer.size(); i++)tree.insert(wordsContainer[i], i, wordsContainer[i].size());vector<int> res;for (auto &q: wordsQuery) res.push_back(tree.find(q));return res;}class trie {//字典树public:trie *next[26];int ind;//标记int mn;//wordsContainer[ind]的长度trie() {for (int i = 0; i < 26; i++)next[i] = nullptr;ind = -1;mn = 0;}void insert(string &s, int id, int len_i) {trie *cur = this;if (cur->ind == -1 || cur->mn > len_i) {//公共后缀为空的情况cur->ind = id;cur->mn = len_i;}for (auto i = s.rbegin(); i != s.rend(); i++) {if (!cur->next[*i - 'a'])cur->next[*i - 'a'] = new trie();cur = cur->next[*i - 'a'];if (cur->ind == -1 || cur->mn > len_i) {//更新标记cur->ind = id;cur->mn = len_i;}}}int find(string &s) {trie *cur = this;for (auto i = s.rbegin(); i != s.rend(); i++) {if (!cur->next[*i - 'a'])break;cur = cur->next[*i - 'a'];}return cur->ind;}};
};

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

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

相关文章

构建以太网交换网络——(生成树实验)

实验介绍 关于本实验 以太网交换网络中为了进行链路备份&#xff0c;提高网络可靠性&#xff0c;通常会使用冗余链路。但是使用冗余链路会在交换网络上产生环路&#xff0c;引发广播风暴以及MAC地址表不稳定等故障现象&#xff0c;从而导致用户通信质量较差&#xff0c;甚至…

【LeetCode-45.跳跃游戏】

题目详情&#xff1a; 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返…

C语言 数组指针 指针数组

指针数组 什么是指针数组&#xff0c;他是一个数组&#xff0c;数组的元素是指针。但是指针也有多种数据类型&#xff0c;有数组指针、函数指针、整形指针、字符串指针。 现在我就使用函数指针来写代码&#xff0c;也就是函数指针数组的应用代码&#xff1a; #include <s…

Debezium日常分享系列之:设置MySQL数据库以支持数据实时采集

Debezium日常分享系列之&#xff1a;设置MySQL数据库以支持数据实时采集 一、创建用户二、启用二进制日志三、启用 GTID四、配置会话超时五、启用查询日志事件六、验证二进制日志行值选项七、Debezium技术总结 在安装和运行 Debezium 连接器之前&#xff0c;需要执行一些 MySQL…

Vscode按键占用问题解决

Vscode按键占用 在使用vscode的过程中&#xff0c;官方按键 Ctrl . 按键可以提示修复代码中的问题&#xff0c;但是发现按了没有反应。 解决问题 首先确认vscode中是否设置了这个按键&#xff0c;默认设置了的系统输入法中是否有按键冲突了&#xff0c;打开输入法设置检查 …

es同义词配置规则

同义词配置有两种: 1,a>b: 通俗的来讲,就是尽管用户输入的是a,但是es在查询的是会转成b去搜索,">"左边的词全部会被右边的词替换。 2,a,b:通俗的来讲,就是不管用户输入的是a还是b,es在查询的是用a,或者b搜索.比如 保温杯,杯子,用户输入的是"保温杯"…

学习java第二十二天

IOC 容器具有依赖注入功能的容器&#xff0c;它可以创建对象&#xff0c;IOC 容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。通常new一个实例&#xff0c;控制权由程序员控制&#xff0c;而"控制反转"是指new实例工作不由程序员来做而是交给Sp…

DNS服务器的分布式架构和集中式架构的区别

DNS服务器是域名系统的核心组件之一&#xff0c;用于解析域名和IP地址之间的映射关系。DNS服务器的架构形式有分布式和集中式两种模式。下面德迅云安全给您介绍DNS服务器的分布式架构和集中式架构的区别。 DNS服务器的分布式架构和集中式架构有什么区别&#xff1f; 1.分布式架…

[iOS]GCD(一)

[iOS]GCD(一) 文章目录 [iOS]GCD(一)GCD的概要GCD的APIDispatch Queuedispatch_queue_createMain Dispatch_set_target_queuedispatch_afterDispatch Groupdispatch_barrier_asyncdispatch_applydispatch_applydispatch_suspend/dispatch_resumeDispatch Semaphoredispatch_onc…

MQ高级篇---消息可靠性

MQ的一些常见问题 后面内容基于springboot 2.3.9.RELEASE 消息可靠性 生产者确认机制 在publisher微服务中application.yml中添加 spring:rabbitmq:publisher-confirm-type: correlatedpublisher-returns: truetemplate:mandatory: true每个RabbitTemplate只能配置一个Return…

【计算机网络】启程

&#x1f4dd;本文介绍 本文为计算机网路系列的开始篇&#xff0c;会介绍一下使用的书籍和自己做的思维导图。 &#x1f44b;作者简介&#xff1a;一个正在积极探索的本科生 &#x1f4f1;联系方式&#xff1a;943641266(QQ) &#x1f6aa;Github地址&#xff1a;https://githu…

Rust下载安装、卸载、版本切换、创建项目(包含指定版本的)

先声名一下&#xff0c;下面所说的版本号为xxxxx-x86_64-unknown-linux-gnu中xxxxx的部分。 下载安装 下载最新版本的Rust&#xff1a; curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh info: downloading installer重启shell 或者 按照提示 执行命令让环境变…

esp8266通讯与控制的思考

一、场景 定时将小灯的开关状态上传给公网服务器。公网服务器充当服务端角色&#xff0c;接收ESP8266发送的信息&#xff08;将小灯或温度传感器信息记录到MySql数据库中&#xff09;&#xff0c;并根据需要生成JSON指令来控制小灯或温度器的开关状态&#xff08;1表示高电平&…

每日一练:LeeCode-561、 数组拆分【数组+排序】

给定长度为 2n 的整数数组 nums &#xff0c;你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) &#xff0c;使得从 1 到 n 的 min(ai, bi) 总和最大。 返回该 最大总和 。 示例 1&#xff1a; 输入&#xff1a;nums [1,4,3,2] 输出&#xff1a;4 解释…

codeTop:二叉树最大深度

属于二叉树遍历的变形&#xff0c;这里使用DFS的递归方式 最大深度就是 max(左子树最大深度 ,右子树最大深度) 1&#xff0c; 而计算左/右子树最大深度可以用相同的算法。 public int maxDepth(TreeNode root) { if(root null){return 0; } int lh maxDepth(root.left); in…

ConcurrentHashMap 为什么是线程安全的?

1、典型回答 ConcurrentHashMap 在不同JDK 版本中&#xff0c;保证线程安全的手段是不同的&#xff0c;它主要分为以下两种情况&#xff1a; JDK 1.7 之前(包含JDK 1.7)&#xff0c;ConcurrentHashMap 主要是通过分段锁 (Segment Lock) 来保证线程安全的。而在JDK 1.8 之后(包…

【数据结构和算法初阶(C语言)】二叉树的链式结构--前、中、后序遍历实现详解,节点数目计算及oj题目详解---二叉树学习日记③

1.二叉树的链式存储 二叉树的链式存储结构是指&#xff0c;用链表来表示一棵二叉树&#xff0c;即用链来指示元素的逻辑关系。 通常的方法是 链表中每个结点由三个域组成&#xff0c;数据域和左右指针域&#xff0c;左右指针分别用来给出该结点左孩子和右孩子所 在的链结点的存…

Qt——2D画图

基础画图函数 矩形 painter.drawRect(50,50,200,100); 圆角矩形 painter.drawRoundRect(50,50,200,200,50,50); xRadius和yRadius分别以矩形宽度和高度的一半的百分比指定&#xff0c;并且应该在0.0到100.0的范围内 弧线 painter.drawArc(50,50,200,200, -90*16, 90*16);…

web渗透测试漏洞流程:红队攻防流程详细大纲

web渗透测试漏洞流程 红队攻防文章跳转大纲前期准备漏洞分析内网阶段内网域渗透持续控制数据收集报告与总结&#xff1a; 红队攻防文章跳转大纲 前期准备 确定目标 明确攻击的目标系统和范围&#xff0c;包括其网络拓扑结构、IP 地址段、域名信息等。 收集信息 通过多种手…

ubuntu18安装opensips3.4,开启ws/wss/http接口模块

、如果是centos 7安装则使用yum 命令。 添加库地址注意系统类型&#xff0c;选择对应的系统类型和版本 curl https://apt.opensips.org/opensips-org.gpg -o /usr/share/keyrings/opensips-org.gpg echo "deb [signed-by/usr/share/keyrings/opensips-org.gpg] https:/…