第 124 场 LeetCode 双周赛题解

news2025/1/23 22:44:11

A 相同分数的最大操作数目 I

在这里插入图片描述

模拟

class Solution {
public:
    int maxOperations(vector<int> &nums) {
        int n = nums.size();
        int s = nums[0] + nums[1];
        int res = 1;
        for (int i = 2; i + 1 < n; i += 2)
            if (nums[i] + nums[i + 1] == s)
                res++;
            else
                break;
        return res;
    }
};

B 进行操作使字符串为空

在这里插入图片描述

计数:记录各字符的出现次数,出现次数最大的各字符的最右位置形成最后一次操作之前的 s s s

class Solution {
public:
    string lastNonEmptyString(string s) {
        vector<int> cnt(26);
        for (auto c: s)
            cnt[c - 'a']++;
        int mx = *max_element(cnt.begin(), cnt.end());
        string res;
        for (int i = s.size() - 1; i >= 0; i--)
            if (cnt[s[i] - 'a'] == mx) {
                cnt[s[i] - 'a'] = 0;
                res.push_back(s[i]);
            }
        reverse(res.begin(), res.end());
        return res;
    }
};

C 相同分数的最大操作数目 II

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

动态规划:设 p [ l ] [ r ] [ t a g ] p[l][r][tag] p[l][r][tag] 为数组 n u m s [ l , r ] nums[l,r] nums[l,r] 在之前各次操作分数都为 s [ t a g ] s[tag] s[tag] 的情况下,最多可以进行的操作次数,实现通过记忆化搜素进行状态转移

class Solution {
public:
    int maxOperations(vector<int> &nums) {
        int n = nums.size();
        int p[n][n][3];
        memset(p, -1, sizeof(p));//初始化标志
        vector<int> s(3);
        s[0] = nums[0] + nums[1];
        s[1] = nums[n - 2] + nums[n - 1];
        s[2] = nums[0] + nums[n - 1];
        function<int(int, int, int)> dfs = [&](int l, int r, int tag) {//记忆化搜素
            if (l > r)
                return 0;
            if (p[l][r][tag] != -1)
                return p[l][r][tag];
            if (r - l + 1 < 2)
                return p[l][r][tag] = 0;
            int tar = s[tag];//一次操作的分数
            p[l][r][tag] = 0;
            if (nums[l] + nums[l + 1] == tar)//删除最前面两个元素
                p[l][r][tag] = max(p[l][r][tag], 1 + dfs(l + 2, r, tag));
            if (nums[r - 1] + nums[r] == tar)//删除最后面两个元素
                p[l][r][tag] = max(p[l][r][tag], 1 + dfs(l, r - 2, tag));
            if (nums[l] + nums[r] == tar)//删除第一个和最后一个元素
                p[l][r][tag] = max(p[l][r][tag], 1 + dfs(l + 1, r - 1, tag));
            return p[l][r][tag];
        };
        int res = 0;
        for (int k = 0; k < 3; k++)//第一次操作时可以进行三种删除
            res = max(res, dfs(0, n - 1, k));
        return res;
    }
};

D 修改数组后最大化数组中的连续元素数目

在这里插入图片描述

排序 + 哈希:先对 n u m s nums nums 排序,然后逆序遍历 n u m s [ i ] nums[i] nums[i],设 p [ x ] p[x] p[x] 为数组 n u m s [ i + 1 , n u m s . s i z e ( ) − 1 ] nums[i+1,nums.size()-1] nums[i+1,nums.size()1] 中起始元素为 x x x (包括通过 +1 得到 x x x 的情况)的最大连续元素数目,遍历过程中更新哈希表 p p p

class Solution {
public:
    int maxSelectedElements(vector<int> &nums) {
        sort(nums.begin(), nums.end());
        int n = nums.size();
        int res = 1;
        unordered_map<int, int> p;
        for (int i = n - 1; i >= 0; i--) {
            p[nums[i]] = p.count(nums[i] + 1) ? p[nums[i] + 1] + 1 : 1;//nums[i]不变的情况
            res = max(res, p[nums[i]]);
            p[nums[i] + 1] = p.count(nums[i] + 2) ? p[nums[i] + 2] + 1 : 1;//nums[i]+1的情况
            res = max(res, p[nums[i] + 1]);
        }
        return res;
    }
};

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

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

相关文章

kali无线渗透之蓝牙技术

“传统蓝牙”规范在2.4GHz的ISM波段上定义了79个信道&#xff0c;每个信道有1MHz的带宽。设备在这些信道中以每秒1600次的频率进行跳转&#xff0c;换句话说&#xff0c;就是每微秒625次跳转。这项信道跳转技术被称为“跳频扩频”(Frequency HoppingSpread Spectrum&#xff0c…

文件上传漏洞--Upload-labs--Pass06--空格绕过

一、什么是空格绕过 在Windows系统中&#xff0c;Windows特性会自动删除文件后缀名后的空格&#xff0c;这使我们看 .php 和 .php 二者没有任何区别&#xff0c;实际上二者是有区别的。若网页源码没有使用 trim()函数 来进行去除空格的操作&#xff0c;就会使网页存在 空格绕…

尾矿库排洪系统结构仿真APP助力尾矿库本质安全

1、背景介绍 尾矿库作为重大危险源之一&#xff0c;在国际灾害事故排名中位列第18位&#xff0c;根据中国钼业2019年8月刊《中国尾矿库溃坝与泄漏事故统计及成因分析》的统计&#xff0c;在46起尾矿库泄漏事故中&#xff0c;由于排洪设施导致的尾矿泄漏事故占比高达1/3&#x…

基于SSM+Vue的电影购票系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

springboot176基于Spring Boot的装饰工程管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

SG5032EAN规格书

SG5032EAN 晶体振荡器结合了相位锁定环&#xff08;PLL&#xff09;技术和AT切割晶体单元&#xff0c;提供了73.5 MHz至700 MHz的广泛频率范围&#xff0c;以满足高速数字应用的需求。高性能的LV-PECL输出&#xff0c;2.5V和3.3V电源电压&#xff0c;可灵活适配不同设计的电源需…

keep-alive 的简单使用

vue-router 的嵌套与模块化 router 实例中增加 children 属性&#xff0c;形成层级效果。App.vue 中的 router-view 承载的是 router 实例最外层的路由对象&#xff0c;如 /login、/404 等PageHome.vue 中的 router-view 承载的是 children 中的路由对象&#xff0c;如 /home、…

效果图渲染为什么找「瑞云渲染」瑞云渲染邀请码WFQB

效果图的渲染可以通过个人的电脑&#xff0c;也可以通过第三方的云渲染平台&#xff0c;两者之间的区别很多人都知道是什么。如果用户需要使用个人电脑&#xff0c;通常需要搭配高性能的硬件&#xff0c;然而硬件中最贵的当数CPU、GPU&#xff0c;云渲染平台则是通过租用高配置…

【漏洞复现-通达OA】通达OA get_datas 存在前台SQL注入漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是由北京通达信科科技有限公司自主研发的协同办公自动化软件,是与中国企业管理实践相结合形成的综合管理办公平台。通达OA get_datas 存在前台SQL注入漏洞,攻击者可通过该漏洞获取数据库敏感信息。 二、影响版本 ●…

Acwing 5471. 数对推理【思维+模拟】

原题链接&#xff1a;https://www.acwing.com/problem/content/5474/ 题目描述&#xff1a; 奶牛贝茜和奶牛贝蒂各有一个整数数对。 每个数对都包含两个 1∼9 之间的不同整数。 这两个数对恰好包含一个公共数&#xff0c;即恰好有一个整数同时包含于这两个数对。 初始时&a…

SPSSAU【文本分析】|社会关系网络图

社会网络关系图 社会网络关系图展示关键词之间的关系情况&#xff0c;此处的关系是指‘共词矩阵’&#xff0c;即两个关键词同时出现的频数情况&#xff0c;将‘共词矩阵’信息使用可视化方式进行呈现出来&#xff0c;接下来将分别阐述‘共词矩阵’和‘社会网络关系图’。 共词…

idea 2018.3永久简单激活。激活码

1.打开hosts文件将 0.0.0.0 account.jetbrains.com 添加到文件末尾 C:\Windows\System32\drivers\etc\hosts 2.注册码&#xff1a; MNQ043JMTU-eyJsaWNlbnNlSWQiOiJNTlEwNDNKTVRVIiwibGljZW5zZWVOYW1lIjoiR1VPIEJJTiIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaW…

禁止电子邮箱地址登录WordPress后台的插件No Login by Email Address

WordPress 4.5及之后的版本增加了使用注册用户的电子邮件地址代替用户名登录的功能&#xff0c;但是大多数个人站长的管理员邮箱地址都是固定&#xff0c;而且到其他站点进行评论留言也是同一个邮箱地址&#xff0c;很容易给一些别有用心的可乘之机&#xff0c;所以禁止WordPre…

黑马鸿蒙教程学习1:Helloworld

今年打算粗略学习下鸿蒙开发&#xff0c;当作兴趣爱好&#xff0c;通过下华为那个鸿蒙开发认证&#xff0c; 发现黑马的课程不错&#xff0c;有视频和完整的代码和课件下载&#xff0c;装个devstudio就行了&#xff0c;建议32G内存。 今年的确是鸿蒙大爆发的一年呀&#xff0c;…

蝶阀、球阀、阀门百科

一、D71X是蝶阀的型号其中D 就代表了蝶阀,7 代表是对夹式链接,1代表这个蝶阀是中线结构,x就是密封面材质为橡胶。结合起来D71X表示的就是手柄对夹中线蝶阀。 二、J41H-100C型号字母含义介绍 J41H-100C型号是德特森阀门常用的高压截止阀型号字母代表的意思是: J——代表阀门类…

秒懂百科,C++如此简单丨第二十一天:栈和队列

目录 前言 Everyday English 栈&#xff08;Stack&#xff09; 图文解释 实现添加删除元素 实现查看清空栈 完整代码 运行示例 栈的选择题 队列&#xff08;Queue&#xff09; 图文解释 队列的基本用法 完整代码 运行结果 队列的好处 结尾 前言 今天我们将…

自定义类型详解 ----结构体,位段,枚举,联合

目录 结构体 1.不完全声明 2.结构体的自引用 3.定义与初始化 4.结构体内存对齐与结构体类型的大小 结构体嵌套问题 位段 1.什么是位段&#xff1f; 2.位段的内存分配 枚举 1.枚举类型的定义 2.枚举的优点 联合&#xff08;共同体&#xff09; 1.联合体类型的声明以…

ChatGPT的大致原理

国外有个博主写了一篇博文&#xff0c;名字叫TChatGPT: Explained to KidsQ」&#xff0c; 直译过来就是&#xff0c;给小孩子解释什么是ChatGPT。 因为现实是很多的小孩子已经可以用父母的手机版ChatGPT玩了 &#xff0c;ChatGPT几乎可以算得上无所不知&#xff0c;起码给小孩…

数控测量|一文读懂在机检测与机床校准补偿系统

在制造业领域&#xff0c;为了确保产品质量和工艺精确度&#xff0c;在机检测与机床校准补偿系统被广泛应用于机床领域。 原理解析 在机检测与机床校准补偿系统由精密测量仪器、信息处理设备和控制系统组成。 机床校准补偿基于有限元分析和反馈控制理论。对机床进行检测和测量…

《苍穹外卖》知识梳理6-缓存商品,购物车功能

苍穹外卖实操笔记六—缓存商品&#xff0c;购物车功能 一.缓存菜品 可以使用redis进行缓存&#xff1b;另外&#xff0c;在实现缓存套餐时可以使用spring cache提高开发效率&#xff1b;   通过缓存数据&#xff0c;降低访问数据库的次数&#xff1b; 使用的缓存逻辑&#…