第 384 场 LeetCode 周赛题解

news2025/1/26 14:19:15

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++;
                } else
                    odd--;
            } 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);
            else
                li.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.coloradmin.cn/o/1446063.html

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

相关文章

Java学习-常用API-新增时间

1.学习JDK8新增时间的原因&#xff1f; 2.JDK8新增了那些时间&#xff1f; 代替calendar的 localDate localTime localDateTime 常用APi及代码示例&#xff1a; ZoneIdZonedDateTime 常用方法 代码示例&#xff1a; 代替Date的 Instant常见方法及其代码示例&#xff1a; 注…

[CUDA 学习笔记] Reduce 算子优化

Reduce 算子优化 注: 本文主要是对文章 【BBuf的CUDA笔记】三&#xff0c;reduce优化入门学习笔记 - 知乎 的学习整理 Reduce 又称之为归约, 即根据数组中的每个元素得到一个输出值, 常见的包括求和(sum)、取最大值(max)、取最小值(min)等. 前言 本文同样按照英伟达官方 PP…

MOCO动量编码

参考&#xff0c;推荐阅读 李沐论文精读系列三&#xff1a;MoCo、对比学习综述&#xff08;MoCov1/v2/v3、SimCLR v1/v2、DINO等&#xff09;_moco 对比学习-CSDN博客 背景 1. MOCO CVPR 2020 2. 对比学习&#xff1a;无监督学习的一种&#xff0c;重点学习同类实例中的共同…

人脸追踪案例及机器学习认识

1.人脸追踪机器人初制 用程序控制舵机运动的方法与机械臂项目完全相同。 由于摄像头的安装方式为上下倒转安装&#xff0c;我们在编写程序读取图像时需使用 flip 函数将 图像上下翻转。 现在&#xff0c;只需要使用哈尔特征检测得到人脸在图像中的位置&#xff0c;再指示舵机运…

BIO、NIO、Netty演化总结

关于BIO&#xff08;关于Java NIO的的思考-CSDN博客&#xff09;和NIO&#xff08;关于Java NIO的的思考-CSDN博客&#xff09;在之前的博客里面已经有详细的讲解&#xff0c;这里再总结一下最近学习netty源码的的心得体会 在之前的NIO博客中我们知道接受客户端连接和IO事件的…

Java编程练习之类的继承

1.创建银行卡类&#xff0c;并分别设计两个储蓄卡和信用卡子类。 import javax.swing.plaf.BorderUIResource;import java.util.Scanner;class Card {int Id; //银行卡&#xff1b;int password; //密码&#xff1b;double balance2000; //账户存款金额&#xff1b;String A…

论文介绍 FreeControl: 无需额外训练实现文本到图像的空间操控!

论文介绍 FreeControl: 无需额外训练实现文本到图像的空间操控&#xff01; 论文介绍 FreeControl: Training-Free Spatial Control of Any Text-to-Image Diffusion Model with Any Condition 关注微信公众号: DeepGo 项目地址&#xff1a;https://genforce.github.io/freeco…

进程间通信[二]

命名管道 mkfifo filename 创建管道 共享内存 systemV 就是一段内存映射到两个进程之中&#xff0c;这段内存就是双方都可以看到同一块公共空间&#xff0c;变具备了进程间通信的前提条件。把映射去掉&#xff0c;然后释放空间&#xff0c;这就是释放共享内存。 共享内存…

实现安全性

实现安全性 问题陈述 Chris希望阅读位于服务器上的电子邮件消息。他将自己的登录信息发送到服务器已进行验证。因此,Chris决定用基于表单的验证来验证他的登录信息。但是,他首先决定只用基于表单的验证测试登录页面 。 解决方案 要解决上述问题,Chris需要执行以下任务: 用…

Github 2024-02-07 开源项目日报 Top9

根据Github Trendings的统计&#xff0c;今日(2024-02-07统计)共有9个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Rust项目2TypeScript项目2Python项目2Ruby项目1HTML项目1NASL项目1Go项目1C项目1Svelte项目1C项目1 React Nat…

2024年2月5日-2月11日周报

论文阅读 1. 本周计划2. 完成情况2.1 论文摘要2.2 网络结构2.3 损失函数2.4 优化器2.5 代码2.5.1 代码结果2.5.2 代码大致流程 4. 总结及收获4. 下周计划 1. 本周计划 阅读论文《Data-Driven Seismic Waveform Inversion: A Study on the Robustness and Generalization》并实…

【MATLAB】GA_BP神经网络回归预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 GA_BP神经网络回归预测算法结合了遗传算法&#xff08;Genetic Algorithm, GA&#xff09;和BP神经网络&#xff08;Backpropagation Neural Network, BPNN&#xff09;&#xff0c;用于解…

Verilog刷题笔记29

题目&#xff1a; Create a 100-bit binary ripple-carry adder by instantiating 100 full adders. The adder adds two 100-bit numbers and a carry-in to produce a 100-bit sum and carry out. To encourage you to actually instantiate full adders, also output the ca…

python+django人力资源管理系统7w5x3

技术栈 后端&#xff1a;python 前端&#xff1a;vue.jselementui 框架&#xff1a;django Python版本&#xff1a;python3.7 数据库&#xff1a;mysql5.7 数据库工具&#xff1a;Navicat 开发软件&#xff1a;PyCharm .设计框架&#xff1a;Vue 1. 表现层&#xff1a;写多…

LocalAI 部署(主要针对 mac m2 启动)

LocalAI 部署 介绍 LocalAI 是免费的开源 OpenAI 替代方案。 LocalAI 充当 REST API 的直接替代品&#xff0c;与本地推理的 OpenAI API 规范兼容。 它无需 GPU&#xff0c;还有多种用途集成&#xff0c;允许您使用消费级硬件在本地或本地运行 LLM、生成图像、音频等等&#…

【北邮鲁鹏老师计算机视觉课程笔记】06 corner 局部特征

【北邮鲁鹏老师计算机视觉课程笔记】06 corner 局部特征 1 局部特征的任务牵引&#xff1a;全景拼接 ①提取特征 ②匹配特征 ③拼接图像 我们希望特征有什么特性&#xff1f; ①可重复性 ②显著性 ③计算效率和表达紧凑性 ④局部性 2 特征点检测的任务 3 角点 在角点&#…

EMC学习笔记(二十五)降低EMI的PCB设计指南(五)

线缆和连接器 1 差模和共模噪声2 串扰3 返回路径数量4 外部PCB -IO 布局建议5 防止噪音和静电放电 tips&#xff1a;资料主要来自网络&#xff0c;仅供学习使用。 设计良好的两层板&#xff0c;和大多数四层板&#xff0c;有最小的辐射。系统级的问题是由于将PCB与任何板外支持…

Linux第52步_移植ST公司的linux内核第4步_关闭内核模块验证和log信息时间戳_编译_并通过tftp下载测试

1、采用程序配置关闭“内核模块验证” 默认配置文件“stm32mp1_atk_defconfig”路径为“arch/arm/configs”; 使用VSCode打开默认配置文件“stm32mp1_atk_defconfg”&#xff0c;然后将下面的4条语句屏蔽掉&#xff0c;如下&#xff1a; CONFIG_MODULE_SIGy CONFIG_MODULE_…

机器学习之局部最优和全局最优

(1)局部最优&#xff0c;就是在函数值空间的一个有限区域内寻找最小值;而全局最优&#xff0c;是在函数值空间整个区域寻找最小值问题。 (2)函数局部最小点是它的函数值小于或等于附近点的点&#xff0c;但是有可能大于较远距离的点。 (3)全局最小点是那种它的函数值小于或等于…

【后端高频面试题--Linux篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;后端高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 后端高频面试题--Linux篇 Windows和Linux的区别&#xff1f;Unix和Linux有什么区别&#xff1f…