LeetCode---384周赛

news2025/1/17 8:57:29

题目列表

3033. 修改矩阵

3034. 匹配模式数组的子数组数目 I

3035. 回文字符串的最大数量

3036. 匹配模式数组的子数组数目 II

一、修改矩阵

简单模拟即可,代码如下

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

 二、匹配模式数组的子数组数目I&II

(二、四题目相同就一起讲了,暴力的做法就不在说了)

这题说实话,也不是很难,关键在于我们要将题目中的信息就行转化,即要将nums数组转换成1/0/-1的数组,然后就是该数组与pattern数组的匹配问题,等价于字符串匹配问题,只不过将字符变成了数字,用kmp算法,代码如下

class Solution {
public:
    int countMatchingSubarrays(vector<int>& nums, vector<int>& pattern) {
        int n=nums.size();
        vector<int> v(n-1);
        for(int i=0;i<n-1;i++)
            v[i]=(nums[i]<nums[i+1])-(nums[i]>nums[i+1]);//利用布尔值0/1来得到1/0/-1,也可以用if语句
        int m=pattern.size();
        vector<int>next(m);
        for(int i=1,j=0;i<m;i++){
            while(j&&pattern[i]!=pattern[j])
                j=next[j-1];
            if(pattern[j]==pattern[i])
                j++;
            next[i]=j;
        }
        int ans=0;
        for(int i=0,j=0;i<n-1;i++){
            while(j&&v[i]!=pattern[j])
                j=next[j-1];
            if(v[i]==pattern[j])
                j++;
            if(j==m){
                ans++;
                j=next[j-1];
            }
        }
        return ans;
    }
};

当然这题也可以用上周赛中的z函数来解答,这里既然又说到z函数,就具体讲解一下z函数的原理和操作,如下图。

那么如何用z函数这个算法来求解字符串匹配问题呢?

代码如下

class Solution {
public:
    int countMatchingSubarrays(vector<int>& nums, vector<int>& pattern) {
        int n=nums.size(),m=pattern.size(),ans=0;
        vector<int> v(pattern);
        for(int i=0;i<n-1;i++)
            v.push_back((nums[i]<nums[i+1])-(nums[i]>nums[i+1]));
        vector<int> z(v.size());
        z[0]=v.size();
        int l=0,r=0;//维护z-box的区间
        for(int i=1;i<v.size();i++){
            if(i<=r) z[i]=min(r-i+1,z[i-l]);
            while(i+z[i]<v.size()&&v[z[i]]==v[i+z[i]]) z[i]++;
            if(r<i+z[i]-1) l=i,r=i+z[i]-1;
            
            if(i>=pattern.size()&&z[i]>=pattern.size()) ans++;
        }
        return ans;
    }
};

三、回文字符串的最大数量

这题算是一个构造题,即如何构造回文串使得回文串的个数尽可能得多,首先我们必然要统计各个字母出现的次数,然后进行分配,从贪心的角度来思考,我们肯定是优先从字符串长度短的开始构造回文串。接下来就是如何构造回文串的问题。

对于回文串,我们只要考虑它的对称的两边是否够用即可(对于奇数长度,中间的那个我们不用考虑,因为字符的个数是足够的,大家可以细品一下这句话),换句话说,我们可以看"成双的字符"的个数有多少,能满足多少个回文串即可,代码如下

class Solution {
public:
    int maxPalindromesAfterOperations(vector<string>& words) {
        int cnt[26]={0};
        int n=words.size();
        vector<int>v;
        for(auto str:words){
            v.push_back(str.size());
            for(auto e:str){
                cnt[e-'a']++;
            }
        }
        int p=0,ans=0;
        for(auto x:cnt) p+=x/2;//得到有几对
        sort(v.begin(),v.end());
        for(auto x:v){
            if(p>=x/2)
                ans++,p-=x/2;
            else
                break;
        }
        return ans;
    }
};

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

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

相关文章

DP读书:《openEuler操作系统》(十)套接字 Socket 数据传输的基本模型

10min速通Socket 套接字简介数据传输基本模型1.TCP/IP模型2.UDP模型 套接字类型套接字&#xff08;Socket&#xff09;编程Socket 的连接1.连接概述(1)基本概念(2)连接状态(3)连接队列 2.建立连接3.关闭连接 socket 编程接口介绍数据的传输1. 阻塞与非阻塞2. I/O复用 数据的传输…

FEP空气采样袋耐强酸应用环境检测污水处理

FEP袋&#xff0c;又称F46&#xff0c;聚全氟乙丙烯膜&#xff0c;是四氟乙烯和六氟丙烯的共聚物。FEP袋子是采用进口聚全氟乙丙烯材质加工而成&#xff0c;可用做化学瓶的储存袋&#xff0c;耐化学腐蚀衬里&#xff0c;离型膜&#xff0c;生物制药细胞培养&#xff0c;可耐压灭…

Win11专业版安装集成了谷歌框架的安卓子系统,包含谷歌商店

1.摘要 上一篇博客讲述了使用微软商店安装安卓子系统的教程 https://blog.csdn.net/RudeTomatoes/article/details/135958882 上述方法的优点是安装过程简单&#xff0c;但是&#xff0c;由于Windows安卓子系统是微软与亚马逊联合开发&#xff0c;默认没有安装谷歌框架。我尝试…

营销系统黑名单优化:位图的应用解析 | 京东云技术团队

背景 营销系统中&#xff0c;客户投诉是业务发展的一大阻碍&#xff0c;一般会过滤掉黑名单高风险账号&#xff0c;并配合频控策略&#xff0c;来减少客诉&#xff0c;进而增加营销效率&#xff0c;减少营销成本&#xff0c;提升营销质量。 营销系统一般是通过大数据分析建模…

h5网页和 Android APP联调,webview嵌入网页,网页中window.open打开新页面,网页只在webview中打开,没有重开一个app窗口

我是h5网页开发&#xff0c;客户app通过webview嵌入我的页面 点击标题window.open跳转到长图页面&#xff0c;客户的需求是在app里新开一个窗口展示长图页面&#xff0c;window.open打开&#xff0c;ios端是符合客户需求的&#xff0c;但是在安卓端他会在当前webview打开 这…

Sora:新一代实时音视频通信框架

一、Sora简介 Sora是一个开源的实时音视频通信框架&#xff0c;旨在提供高效、稳定、可扩展的音视频通信解决方案。它基于WebRTC技术&#xff0c;支持跨平台、跨浏览器的实时音视频通信&#xff0c;并且具备低延迟、高并发、易集成等特点。 --点击进入Sora(一定要科学哦&#x…

MSS与cwnd的关系,rwnd又是什么?

慢启动算法是指数递增的 这种指数增长的方式是慢启动算法的一个核心特点&#xff0c;它确保了TCP连接在开始传输数据时能够快速地探测网络的带宽容量&#xff0c;而又不至于过于激进导致网络拥塞。具体来说&#xff1a; 初始阶段&#xff1a;当TCP连接刚建立时&#xff0c;拥…

Day50 739每日温度 496下一个更大元素I 503下一个更大元素II

739 每日温度 请根据每日 气温 列表&#xff0c;重新生成一个列表。对应位置的输出为&#xff1a;要想观测到更高的气温&#xff0c;至少需要等待的天数。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 例如&#xff0c;给定一个列表 temperatures [73, 7…

【Unity】管道流动模拟Shader

【Unity】管道流动模拟Shader 抽象模拟管道介质流动的效果&#xff0c;使用顶点片元着色器。可以调整管线光泽&#xff0c;颜色&#xff0c;流动方向&#xff0c;透明度&#xff0c;流动体粗细&#xff0c;流动速度和横断面。 实现效果 Demo效果 Demo下载地址 管线光泽调整 …

OpenAI最新Sora视频学习与生成的技术分析与最新体验渠道

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言OpenAI体验通道Spacetime Latent Patches 潜变量时空碎片, 建构视觉语言系统…

从 AGP 4.1.2 到 7.5.1——XmlParser、GPathResult、QName 过时

新年首发&#xff0c; 去年的问题&#xff0c;今年解决~ 问题 & 排查 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task :app:processCommonReleaseManifest. > org.xml.sax.SAXParseException; lineNumber: 1; columnNu…

内存计算研究进展-通用的近数据计算架构

通用的近数据计算架构方面代表性工作有&#xff1a; AMD Research的 TOP-PIM&#xff0c;Carnegie Mellon Univeristy 的 TOM&#xff0c; University of Wisconsin-Madison 的 DRAMA 和 NDA&#xff0c;Seoul National University 的 PEI &#xff0c;IBM Research 的 AMC (ac…

【金蝶BI方案】做生产订单分析,要分析哪些指标?

一般来说&#xff0c;做生产订单分析要做量大部分的内容。一个是分析总的计划生产数据和实际完成情况、良品情况&#xff1b;另一个则是详细分析每种产品的订单量、计划生产数量、实际完工数量等。从而让运营管理者更加直接地了解到生产订单情况&#xff0c;更好地安排生产任务…

单片机学习笔记---红外遥控红外遥控电机调速(完结篇)

目录 低电平触发中断和下降沿触发中断的区别 红外遥控 Int0.c Int.h Timer0.c Timer0.h IR.c IR.h main.c 红外遥控电机调速 Timer1.c Timer.h Motor.c Motor.h main.c 上一节讲了红外发送和接收的工作原理&#xff0c;这一节开始代码演示&#xff01; 提前说…

九州金榜|家庭教育中孩子焦虑怎么办?

随着现代社会的快速发展&#xff0c;孩子们面临的压力和焦虑感也在逐渐增强。家庭教育作为孩子成长过程中的重要环节&#xff0c;对于如何有效缓解孩子焦虑情绪产生是家长不得不面对的问题&#xff0c;九州金榜家庭教育以为&#xff0c;我们需要了解孩子焦虑的根源&#xff0c;…

mysql同类型的多行变成一行value1和value2不同的列

关键字 row_number() over (partition by) 例如&#xff0c;下面的数据&#xff0c; 这是按照name分组后&#xff0c;展示property值。 我们想得到这样的值; 第一步&#xff1a;将每一组的property标上序号 select name,property,row_number() over (partition by name order…

Java中的Arrays和Lambda表达式

Arrays和Lambda Arrays常用方法数组中是对象&#xff08;如何排序&#xff09; Lambda什么是LambdaLambda表达式的省略规则 Arrays 是一个用来操作数组的工具类 常用方法 数组中是对象&#xff08;如何排序&#xff09; 方式一 方式二 Lambda 什么是Lambda 是JDK 8 开始新…

fastApi笔记03-请求体

请求体是客户端发送给API的数据&#xff0c;fastApi使用 Pydantic 模型来声明请求体 不能使用 GET操作&#xff08;HTTP 方法&#xff09;发送请求体。 要发送数据&#xff0c;必须使用下列方法之一&#xff1a;POST&#xff08;较常见&#xff09;、PUT、DELETE 或 PATCH 创…

自养号测评低成本高效率推广,安全可控

测评的作用在于让用户更真实、清晰、快捷地了解产品以及产品的使用方法和体验。通过买家对产品的测评&#xff0c;也可以帮助厂商和卖家优化产品缺陷&#xff0c;提高用户的使用体验。这进而帮助他们获得更好的销量&#xff0c;并更深入地了解市场需求。因此&#xff0c;测评在…

2024 互联网大厂职级和薪资一览表!

在向往互联网的朋友们的眼中&#xff0c;互联网大厂的工作可是一个“香饽饽”&#xff0c;无论是薪资福利、还是晋升制度&#xff0c;都是整个行业的标杆。 “大厂经验”更是互联网就业环境中的一块金字招牌&#xff0c;让简历光鲜度up up&#xff0c;对找工作有很大的帮助。 所…