第 384 场 LeetCode 周赛题解

A 修改矩阵

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

模拟

class Solution {
public:vector<vector<int>> modifiedMatrix(vector<vector<int>> &matrix) {int m = matrix.size(), n = matrix[0].size();vector<int> mx(n, INT32_MIN);for (int i = 0; i < m; i++)for (int j = 0; j < n; j++)mx[j] = max(mx[j], matrix[i][j]);for (int i = 0; i < m; i++)for (int j = 0; j < n; j++)if (matrix[i][j] == -1)matrix[i][j] = mx[j];return matrix;}
};

B 匹配模式数组的子数组数目 I

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

枚举 n u m s nums nums 中长为 m + 1 m+1 m+1 的子数组,判断是否匹配模式数组

class Solution {
public:int countMatchingSubarrays(vector<int> &nums, vector<int> &pattern) {int n = nums.size(), m = pattern.size();int res = 0;for (int i = 0, j = m; j < n; i++, j++) {int k = 0;for (; k < m; k++) {if (nums[k + i + 1] > nums[k + i] && pattern[k] != 1)break;if (nums[k + i + 1] == nums[k + i] && pattern[k] != 0)break;if (nums[k + i + 1] < nums[k + i] && pattern[k] != -1)break;}if (k == m)res++;}return res;}
};

C 回文字符串的最大数量

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

贪心:记录 w o r d s words words 中各字符总数,得到形成配对的字符数目 e v e n even even 和单一的字符数目 o d d odd odd,按 w o r d s words words 中字符串长短升序枚举字符串,判断能否形成回文字符串

class Solution {
public:int maxPalindromesAfterOperations(vector<string> &words) {vector<int> cnt(26);vector<int> li;for (auto &s: words) {li.push_back(s.size());for (auto c: s)cnt[c - 'a']++;}sort(li.begin(), li.end());int odd = 0, even = 0;//even:形成配对的字符数目,odd:单一的字符数目for (int i = 0; i < 26; i++)if (cnt[i]) {even += cnt[i] / 2 * 2;odd += cnt[i] % 2;}int res = 0;for (auto x: li) {if (x & 1) {if (even < x - 1)break;even -= x - 1;if (odd == 0) {if (even == 0)break;//需要拆一对配对字符even--;odd++;} elseodd--;} else {if (even < x)break;even -= x;}res++;}return res;}
};

D 匹配模式数组的子数组数目 II

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

滚动哈希 + 枚举:枚举 n u m s nums nums 中长为 m + 1 m+1 m+1 的子数组,用哈希判断是否匹配模式数组

class Solution {
public:int countMatchingSubarrays(vector<int> &nums, vector<int> &pattern) {int n = nums.size(), m = pattern.size();vector<int> li;for (int i = 0; i + 1 < n; i++) {if (nums[i + 1] > nums[i])li.push_back(1);else if (nums[i + 1] == nums[i])li.push_back(0);elseli.push_back(-1);}srand(time(0));//随机种子int e = 2333 + rand() % 100, p = 1e9 + rand() % 100;shash h1(li, e, p), h2(pattern, e, p);int res = 0;for (int i = 0; i + m - 1 < li.size(); i++)if (h1(i, i + m - 1) == h2(0, m - 1))res++;return res;}class shash {//滚动哈希模板public:using ll = long long;vector<ll> pres;vector<ll> epow;ll e, p;shash(vector<int> &s, ll e, ll p) {int n = s.size();this->e = e;this->p = p;pres = vector<ll>(n + 1);epow = vector<ll>(n + 1);epow[0] = 1;for (int i = 0; i < n; i++) {pres[i + 1] = (pres[i] * e + s[i]) % p;epow[i + 1] = (epow[i] * e) % p;}}ll operator()(int l, int r) {ll res = (pres[r + 1] - pres[l] * epow[r - l + 1] % p) % p;return (res + p) % p;}};
};

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

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

相关文章

Java核心设计模式:代理设计模式

一、生活中常见的代理案例 房地产中介&#xff1a;客户手里没有房源信息&#xff0c;找一个中介帮忙商品代购&#xff1a;代理者一般有好的资源渠道&#xff0c;降低购物成本&#xff08;如海外代购&#xff0c;自己不用为了买东西出国&#xff09; 二、为什么要使用代理 对…

限制资源使用

限制资源使用 您需要显示对服务器资源的访问来保护Web应用程序和应用程序数据不受未授权用户的访问。在Java EE Web应用程序中,您可以通过在应用服务器中创建用户和用户组来保护资源免受未经授权的访问。您可以为应用程序定义角色并在部署过程中将角色分配给用户。 1. 创建授权…

服务异步通信

服务异步通信 消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 1.消息可靠性 消息从发送&#xff0c;到消费者接收&#xff0c;会经理多个过程&#xff1a; 其中的每一步都可能导致消息丢失&#xff0c;常见的丢失原因包括&#xff1a; 发送时丢失…

黄金交易策略(Nerve Nnife.mql4):趋势平仓按钮的作用

当觉得行情不太对路&#xff0c;可以点击右下角按钮&#xff0c;实现趋势单的移动止盈&#xff08;止损&#xff09;。点了这个按钮回撤多少平仓是可以在参数里设定的。 完整EA&#xff1a;Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客

宿舍报修|宿舍报修小程序|基于微信小程序的宿舍报修系统的设计与实现(源码+数据库+文档)

宿舍报修小程序目录 目录 基于微信小程序的宿舍报修系统的设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户小程序功能模块 2、学生信息管理 3、维修人员管理 4、故障上报管理 5、论坛信息管理 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&…

npm config set registry https://registry.npm.taobao.org 这个设置了默认的镜像源之后如何恢复默认的镜像源

要恢复npm默认的镜像源&#xff0c;你可以使用以下命令将registry设置回npm的官方源&#xff1a; npm config set registry https://registry.npmjs.org/这个命令会修改你的全局npm配置&#xff0c;将包的下载源改回npm官方的源。这样做之后&#xff0c;任何后续的npm install…

算法-3-基本的数据结构

单双链表 1.单链表双链表如何反转 import java.util.ArrayList; import java.util.List;public class Code01_ReverseList {public static class Node {public int value;public Node next;public Node(int data) {value data;}}public static class DoubleNode {public int…

CSS之盒模型

盒模型概念 浏览器盒模型&#xff08;Box Model&#xff09;是CSS中的基本概念&#xff0c;它描述了元素在布局过程中如何占据空间。盒模型由内容&#xff08;content&#xff09;、内边距&#xff08;padding&#xff09;、边框&#xff08;border&#xff09;、和外边距&…

ChatGPT高效提问—prompt常见用法(续篇八)

ChatGPT高效提问—prompt常见用法(续篇八) 1.1 对抗 ​ 对抗是一个重要主题,深入探讨了大型语言模型(LLM)的安全风险。它不仅反映了人们对LLM可能出现的风险和安全问题的理解,而且能够帮助我们识别这些潜在的风险,并通过切实可行的技术手段来规避。 ​ 截至目前,网络…

HeidiSQL安装配置(基于小皮面板(phpstudy))连接MySQL

下载资源 对于这款图形化工具&#xff0c;博主建议通过小皮面板&#xff08;phpstudy&#xff09;来下载即可&#xff0c;也是防止你下载到钓鱼软件&#xff0c;小皮面板&#xff08;phpstudy&#xff09;如果你不懂是什么&#xff0c;请看下面链接这篇博客 第二篇&#xff1a;…

大话设计模式——1.模板方法模式(Template Method Pattern)

定义&#xff1a;定义一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 例子&#xff1a;比较重大的考试往往有A、B两套试卷&#xff0c;其中一套出现问题可以立马更换另一套。 定义基…