LeetCode周赛384 题解

news2025/1/30 15:57:39

AK

第 384 场周赛 - 力扣(LeetCode)


前两题都是签到,      略。 

第三题: 回文字符串的最大数量 

1、题意:

给定一个字符串数组,总字符数量不超过1e6, 可以交换其中的任意两个字符,问能构造最多几个回文字符串。


2、题解:

首先我们要知道,无论怎么交换,字符数组内的各个字符串的长度不能发生改变,只是原来的字符布局发生了改变,那我们不妨先将所有的字符拿出来然后依次发出去,问题此时转化为了怎么分配字符使得回文字符串最多,考虑一个字符串,他需要的字符数量一定是len / 2对一样的字符,所以我们直接根据字符串长度对数组排序,优先分配给长度较小者,那如果它的长度是奇数呢,我们也直接借一位,将代价留给最后一个字符串,因为它的变成回文串最难,代价最高。
 

3、代码 (C++):
class Solution {
public:
    
    int maxPalindromesAfterOperations(vector<string>& words) {
        map<char, int> mp; 
        vector<int> us; 
        for(int i = 0; i < words.size(); i ++ )     
            for(auto c : words[i]) mp[c] ++; 
        int r = 0;
        for(auto t : mp) r += (t.second / 2); 
        for(int i = 0; i < words.size(); i ++ ) us.push_back(words[i].size()); 
        sort(us.begin(), us.end()); 
        int ans = 0; 
        for(int i = 0; i < us.size(); i ++ ) {
            int o = us[i] / 2;
            if(o <= r) r -= o, ans ++; 
        }
        return ans; 
    }
};

第四题:匹配模式的子数组数目2

1、题意:


 
2、题解:

数据范围相对于签到题变大了,我们不妨先预处理出来 i <= n - 1元素与前一个元素的大小关系划分1, -1, 0的,因为也就三种值,我们不妨规定一种映射0:{a}, 1: {b}, -1:{c},此时两个数组都变成了字符串,问题转化成了字符串匹配的问题,我们不妨对两个字符串进行哈希,边遍历i < n - m的位置边比较哈希值,最后得到答案。

3、代码(C++)
 
class Solution {
public:
    int countMatchingSubarrays(vector<int>& nums, vector<int>& pattern) {
        int n = nums.size(), m = pattern.size(); 
        const int N = n + 2; 
        unsigned long long p1[N], h1[N], p2[N], h2[N]; 
         
        int P = 131; 
        map<int, char> mp;
        mp[0] = 'a', mp[1] = 'b', mp[-1] = 'c'; 
        string a, b; 
        for(int i = 0; i < pattern.size(); i ++ ) a += mp[pattern[i]];
        for(int i = 0; i < n - 1; i ++ ) 
            if(nums[i] < nums[i + 1]) b += mp[1]; 
            else if(nums[i] > nums[i + 1]) b += mp[-1]; 
            else b += mp[0]; 
        p1[0] = 1; 
        for(int i = 1; i <= n - 1; i++ ) 
        {
            p1[i] = p1[i-1] * P;    
            h1[i] = h1[i-1] * P + b[i - 1]; 
        }
        p2[0] = 1; 
        for(int i = 1; i <= m; i++ ) 
        {
            p2[i] = p2[i-1] * P;    
            h2[i] = h2[i-1] * P + a[i - 1];  
        }        
        int ans = 0; 
        for(int i = 0; i < n - m; i ++ ) {
            
            int l = i + 1, r = i + m;
            unsigned long long x = h1[r] - h1[l - 1] * p1[r - l + 1];
            l = 1, r = m; 
            unsigned long long y = h2[r] - h2[l - 1] * p2[r - l + 1];
            if(x == y) ++ ans; 
        }
        return ans; 
    }
};

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

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

相关文章

中科大计网学习记录笔记(十二):TCP 套接字编程

前前言&#xff1a;大家看到这一章节的时候一定不要跳过&#xff0c;虽然标题是编程&#xff0c;但实际上是对 socket 的运行机制做了详细的讨论&#xff0c;对理解 TCP 有很大的帮助&#xff1b;但是由于本节涉及到了大量的编程知识&#xff0c;对于一些朋友来说不是很好理解&…

阿里云香港服务器cn2速度测试和租用价格表

阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品&#xff0c;中国电信CN2高速网络高质量、大规格BGP带宽&#xff0c;运营商精品公网直连中国内地&#xff0c;时延更低&#xff0c;优化海外回中国内地流量的公网线路&#xff0c;可以提高国际业务访问质量。阿里云服务…

『运维备忘录』之 CMD 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是&#xff0c;甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作&#xff0c;持续给大家更新运维工作所需要接触到的知识点&#xff0c;希望大…

Linux-系统资源管理的命令

目录 查看CPU&#xff1a;more /proc/meminfo 查看内存数据&#xff1a;free -m / free -h 查看系统版本&#xff1a;more /etc/issue 查看操作系统的类型&#xff1a;uname -a 查看主机名称&#xff1a;hostname 查看磁盘空间&#xff1a;df -h 查看某个目录空间…

互联网加竞赛 基于设深度学习的人脸性别年龄识别系统

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习机器视觉的…

【IEEE-Trans】这本TOP刊一点不拖泥带水,审稿很利索!质量也很不错!

【SciencePub学术】 期刊信息简介 IEEE TRANSACTIONS ON INSTRUMENTATION AND MEASUREMENT IF(2022)&#xff1a;5.6&#xff0c;JCR1区&#xff0c;中科院2区TOP 期刊数据指标 ISSN&#xff1a;0018-9456 IF(2022)&#xff1a;5.6 自引率&#xff1a;23.20% 年发文量&a…

好的程序员不该局限技术故步自封,更多去了解产品,运营,销售,推广,公司运作吧

在当今技术迅速发展的时代&#xff0c;作为程序员&#xff0c;我们常常面临着学习速度跟不上技术变化的困扰。每年涌现的新技术、新框架&#xff0c;给我们带来了巨大的挑战。尤其是随着年龄增长&#xff0c;学习能力的下降似乎让我们更加被动。技术的发展也并非一帆风顺&#…

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(6)特征工程初步

特征工程是一个非常重要的概念&#xff0c;从特征工程可以领会到机器学习的真谛。 特征工程就是从原始数据转换为特征向量的过程。 特征工程的特点&#xff1a; 特征工程是机器学习中很重要的起始步骤&#xff0c;直接影响效果&#xff0c;需要大量的时间。 数据和特征决定了…

NLP深入学习:《A Survey of Large Language Models》详细学习(六)

文章目录 1. 前言2. LLMs 能力与评价方法2.1 基础能力2.1.1 语言生成2.1.2 知识利用率2.1.3 复杂推理 2.2 高阶能力2.3 基准和评估方法2.3.1 评价基准2.3.2 评估方法2.3.3 评估方法优点和不足 3. 参考 1. 前言 最近正在读 LLM 论文的综述&#xff0c;当前采取的策略是部分内容…

【JVM】打破双亲委派机制

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;JVM ⛺️稳中求进&#xff0c;晒太阳 打破双亲委派机制 打破双亲委派机制三种方法 自定义类加载器 ClassLoader包含了四个核心方法 //由类加载器子类实现&#xff0c;获取二进制数据调用…

安装cockpit

1、下载cockpit yum -y install cockpit 下载相关环境 yum install qemu-kvm libvirt libvirt-daemon virt-install virt-manager libvirt-dbus 2、启动libvirtd systemctl start libvirtd.service systemctl enable libvirtd.service 3、设置开机自启动 systemctl enabl…

高程 | 继承与派生(c++)

文章目录 &#x1f4da;继承的概念和语法&#x1f4da;派生类生成过程&#x1f4da;继承权限和继承方式&#x1f407;公有继承&#x1f407;私有继承&#x1f407;保护继承 &#x1f4da;类型转换规则&#x1f4da;派生类构造函数和析构函数&#x1f4da;继承中的静态成员特性&…

并发编程之深入理解JVM并发三大特性

并发编程之深入理解JVM&并发三大特性 并发编程解决的问题 ​ 多线程同步&#xff08;一个线程需要等待另一个线程的结果&#xff0c;一个线程依赖于另一个线程&#xff09;&#xff0c;互斥&#xff08;一个资源只能一个线程使用&#xff09;&#xff0c;分工&#xff08…

华为配置直连二层组网隧道转发示例

配置直连二层组网隧道转发示例 组网图形 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户通过WLAN接入网络&#xff0c;以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff0c;不影响用户的业务使用。 组网需求 AC组…

Open CASCADE学习|布尔运算

目录 1、加法&#xff1a;BRepAlgoAPI_Fuse 2、减法&#xff1a;BRepAlgoAPI_Cut 3、交集&#xff1a;BRepAlgoAPI_Common 4、交线&#xff1a;BRepAlgoAPI_Section 1、加法&#xff1a;BRepAlgoAPI_Fuse #include <gp_Pnt.hxx>#include <BRepPrimAPI_MakeBox.hxx…

计算机网络-数据通信基础

目录 前言 一、数据通信基本概念 二、数据通信相关知识1 总结 前言 正在学习计算机网络体系&#xff0c;把每日所学的知识梳理出来&#xff0c;既能够当作读书笔记&#xff0c;又能分享出来和大家一同学习讨论。 一、数据通信基本概念 基本概念&#xff1a;信源、信道、信宿&…

怎么防止u盘里的东西被拷贝?

随着科技的进步&#xff0c;U盘作为便携式存储设备&#xff0c;在我们的日常工作和生活中扮演着越来越重要的角色。然而&#xff0c;这也带来了一个潜在的安全风险——U盘内的数据可能被未经授权的人员拷贝。 一、了解U盘拷贝数据的常见方式 在探讨如何防止U盘数据被拷贝之前&…

setTimeout及setInterval

setTimeout用法&#xff1a; 过100ms调用函数 setTimeout((a) > {console.log(111,a);}, 100,我是定时器); 参数&#xff1a; 第一个参数&#xff1a;必填&#xff0c;回调函数&#xff1b; 第二个参数&#xff1a;可选&#xff0c;延迟时间&#xff0c;单位ms 第三个参…

Apache Httpd 常见漏洞解析(全)

一、Apache HTTPD 换行解析漏洞 漏洞编号&#xff1a;CVE-2017-15715 Apache HTTPD是一款HTTP服务器&#xff0c;它可以通过mod_php来运行PHP网页。 其2.4.0~2.4.29版本中存在一个解析漏洞。 在解析PHP时&#xff0c;1.php\x0A将被按照PHP后缀进行解析&#xff0c;导致绕过…

springboot第56集:微服务框架,物联网IOT,SQL数据库MySQL底层,AOP收集业务操作日志架构周刊...

单点登录 1.配置代理信息 /*请求登陆的方法*/ "/modelLogin": {//本地服务接口地址&#xff0c;这是测试环境&#xff0c;正式环境需要更改下地址target: "http://127.0.0.1:6776/xxx-auth/",changeOrigin: true,pathRewrite: {"^/modelLogin": …