第 374 场 LeetCode 周赛题解

news2025/7/11 7:17:26

A 找出峰值

在这里插入图片描述

枚举

class Solution {
public:
    vector<int> findPeaks(vector<int> &mountain) {
        int n = mountain.size();
        vector<int> res;
        for (int i = 1; i < n - 1; i++)
            if (mountain[i] > mountain[i - 1] && mountain[i] > mountain[i + 1])
                res.push_back(i);
        return res;
    }
};

B 需要添加的硬币的最小数量

在这里插入图片描述

贪心:对 c o i n s coins coins 升序排序,枚举 c o i n s [ i ] coins[i] coins[i] ,设当前已经可获得 [ 0 , r e a c h ] [0,reach] [0,reach] 范围内的任意整数金额,若 c o i n s [ i ] ≤ r e a c h + 1 coins[i] \le reach + 1 coins[i]reach+1 ,则由 c o i n s [ 0 , i ] coins[0,i] coins[0,i] 的子序列可得到 [ 0 , r e a c h + c o i n s [ i ] ] [0,reach+coins[i]] [0,reach+coins[i]] 范围内的任意整数金额度,否则需要添加一个尽可能大的硬币 r e a c h + 1 reach + 1 reach+1

class Solution {
public:
    int minimumAddedCoins(vector<int> &coins, int target) {
        sort(coins.begin(), coins.end());
        int res = 0;
        int e, i, reach;
        for (e = 1, i = 0, reach = 0; reach < target && i < coins.size();) {
            if (coins[i] <= reach + 1) {
                reach += coins[i++];
            } else {
                res++;
                reach += reach + 1;
            }
        }
        for (; reach < target;) {
            res++;
            reach += reach + 1;
        }
        return res;
    }
};

C 统计完全子字符串

在这里插入图片描述

枚举 + 前缀和:首先用条件2将 w o r d word word 划分成若干满足子字符串,使得各子字符串内部任意相邻字符满足条件2,然后只需在各个子字符串中找满足条件1的子字符串,这样的字符串的长度只能是 k , 2 k , ⋯   , 26 k k,2k,\cdots,26k k,2k,,26k 其中之一,枚举子字符串可能的长度 l e n len len,然后滑动窗口枚举场长为 l e n len len 的子字符串,用前缀和判断在该子串中的字符数量是否为 k k k

class Solution {
public:
    int cmp(const string &s, int k) {
        int n = s.size();
        int pre[n + 1][26];//前缀和
        for (int j = 0; j < 26; j++)
            pre[0][j] = 0;
        for (int i = 0; i < n; i++)
            for (int j = 0; j < 26; j++)
                pre[i + 1][j] = pre[i][j] + (s[i] - 'a' == j ? 1 : 0);
        int res = 0;
        for (int len = k; len <= s.size() && len <= 26 * k; len += k) {
            for (int l = 0, r = len - 1; r < n; l++, r++) {//子串s[l,r]
                int can = 1;
                for (int i = 0; i < 26; i++) {
                    if (pre[r + 1][i] - pre[l][i] != 0 && pre[r + 1][i] - pre[l][i] != k) {
                        can = 0;
                        break;
                    }
                }
                if (can)
                    res++;
            }
        }
        return res;
    }

    int countCompleteSubstrings(string word, int k) {
        int res = 0;
        for (int i = 0, j = 0, n = word.size(); i < n;) {
            while (j + 1 < n && abs(word[j + 1] - word[j]) <= 2)
                j++;
            res += cmp(word.substr(i, j - i + 1), k);
            i = ++j;
        }
        return res;
    }
};

D 统计感冒序列的数目

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

计数 + 逆元:设以感冒的人为间隔,未感冒的人可以划分成若干人数为 a i a_i ai 的组: a 1 , ⋯   , a k a_1,\cdots,a_k a1,,ak,总序列数为: ( ∑ a i ) ! ∏ a i ! × ∏ f ( a i ) \frac {(\sum a_i)!} {\prod a_i!} \times \prod f(a_i) ai!(ai)!×f(ai) ,其中当 a i a_i ai 不是与边界相邻的组时 f ( a i ) = 2 a i − 1 f(a_i)=2^{a_i-1} f(ai)=2ai1 ,否则 f ( a i ) = 1 f(a_i)=1 f(ai)=1

class Solution {
public:
    using ll = long long;
    ll mod = 1e9 + 7;

    ll fpow(ll x, ll n) {//快速幂 x^n
        ll res = 1;
        for (ll e = x; n; e = e * e % mod, n >>= 1)
            if (n & 1)
                res = res * e % mod;
        return res;
    }

    ll inv(ll x) {//x 在 mod 下的匿元 
        return fpow(x, mod - 2);
    }

    int numberOfSequence(int n, vector<int> &sick) {
        vector<ll> fact(n + 1, 1), f2(n + 1, 1);
        for (int i = 1; i <= n; i++) {
            fact[i] = fact[i - 1] * i % mod;
            f2[i] = f2[i - 1] * 2 % mod;
        }
        int res = 1;
        int m = sick.size();
        int s = 0;
        if (sick[0] != 0) {//与左边界相邻的组
            s += sick[0];
            res = res * inv(fact[sick[0]]) % mod;
        }
        if (sick[m - 1] != n - 1) {//与右边界相邻的组
            s += n - 1 - sick[m - 1];
            res = res * inv(fact[n - 1 - sick[m - 1]]) % mod;
        }
        for (int i = 0; i < m - 1; i++)//枚举中间的各个分组
            if (sick[i + 1] != sick[i] + 1) {
                int t = sick[i + 1] - sick[i] - 1;
                s += t;
                res = res * inv(fact[t]) % mod;
                res = res * f2[t - 1] % mod;
            }
        res = res * fact[s] % mod;
        return (res + mod) % mod;
    }
};

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

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

相关文章

基于搜索协议实现工业设备升级

目录 1、背景引入 2、技术分析 3、过程概述 4、服务器端流程 5、客户端流程 6、效果展示 7、源码 7.1 master&#xff08;主控&#xff09; 7.2 device&#xff08;设备&#xff09; 8、注意事项 1、背景引入 在工业生产中&#xff0c;设备的升级和维护是非常重要的…

JavaScript学习-1

01 基础用法 //index.html <body><!-- 行内JS --><button type"button" onclick"alert(hello)">按钮</button><!--内部JS--><script type"text/javascript">alert("你好");</script><…

Unity C++交互

一、设置Dll输出。 两种方式&#xff1a; 第一&#xff1a;直接创建动态链接库工程第二&#xff1a;创建的是可执行程序&#xff0c;在visual studio&#xff0c;右键项目->属性(由exe改成dll) 二、生成Dll 根据选项Release或Debug&#xff0c;运行完上面的生成解决方案后…

计网Lesson6 - IP 地址分类管理

文章目录 1. I P IP IP 地址定义2. I P v 4 IPv4 IPv4 的表示方法2.1 I P v 4 IPv4 IPv4 的分类编址法2.2 I P v 4 IPv4 IPv4 的划分子网法2.2.1 如何划分子网2.2.2 如何确定子网的借位数2.2.3 总结2.2.4 题目练习 2.3 I P v 4 IPv4 IPv4 的无分类编址法 1. I P IP IP 地…

kafka3.6.0部署

部署zk https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.9.1/apache-zookeeper-3.9.1.tar.gz tar -xf apache-zookeeper-3.9.1.tar.gz -C /apps cd /apps/ && ln -s apache-zookeeper-3.9.1 zookeeper 修改配置bash grep -vE ^$|^# conf/zo…

代码随想录算法训练营第四十一天 _ 动态规划_343. 整数拆分、96.不同的二叉搜索树、01背包问题。

学习目标&#xff1a; 动态规划五部曲&#xff1a; ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录&#xff01; 60天训练营打卡计划&#xff01; 学习内容&#xff1a; 343. 整数拆分 动态规划五步曲&…

【接口测试】Apifox实用技巧干货分享

前言 不知道有多少人和我有着这样相似的经历&#xff1a;从写程序只要不报错就不测试&#x1f60a;&#xff0c;到写了程序若是有bug就debug甚至写单元测试&#xff0c;然后到了真实开发场景&#xff0c;大哥和你说&#xff0c;你负责的功能模块的所有接口写完要测试一遍无误在…

python——进程常用功能

Python的multiprocessing模块提供了强大的并行处理能力&#xff0c;以下是几个功能的详细解释&#xff1a; join(): 在multiprocessing中&#xff0c;join方法用于阻塞主进程直到指定的进程终止。这对于确保所有子进程在程序结束前完成其工作是很有用的。deamon(): 在multipro…

16.字符串处理函数——字符串长度函数

文章目录 前言一、题目描述 二、解题 程序运行代码 总结 前言 本系列为字符串处理函数编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 二、解题 程序运行代码 #include<stdio.h> #include<string.h> int main() {char str[ ]"0123\0456…

根据关键词写作文章的软件,根据标题写作文章的工具

在当今信息化时代&#xff0c;人工智能技术的飞速发展&#xff0c;智能AI写作工具逐渐成为文案创作者的得力助手。这些工具不仅能够根据标题迅速生成文章&#xff0c;而且在提高创作效率的同时&#xff0c;也为我们节省了大量时间和精力。 人工智能的基本原理&#xff1a;人工智…

如何查看Microsoft Office 使用期限

1.进入到 Office 软件的安装目录&#xff08;******\Microsoft Office\Office&#xff09; ## 以管理员身份打开 Windows PowerShell输入以下命令&#xff0c;回车 cscript ospp.vbs /dstatusREMAINING GRACE 一行表示激活剩余天数&#xff08;括号内是换算成的剩余分钟数…

15.字符串处理函数——字符串连接函数

文章目录 前言一、题目描述 二、解题 程序运行代码 总结 前言 本系列为字符串处理函数编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 二、解题 程序运行代码 #include<stdio.h> #include<string.h> int main() {char dest[20] "12345…

【Linux】第二十五站:深入理解文件系统

文章目录 一、前言二、认识硬件----磁盘1.基本介绍2.磁盘的存储构成3.磁盘的逻辑结构4.回归到硬件 三、文件系统1.划分2.Block group(1)Data blocks(2)inode Table(3)Block Bitmap(4)inode Bitmap(5)Group Descriptor Table(GDT)(6)Super Block 3.总结4.一些其他问题5.如何理解…

音视频的功耗优化

前言 在应用中&#xff0c;录制与音视频模块往往是高耗能的模块&#xff0c;设备容易发热&#xff0c;影响体验。 什么是功耗优化 手机有多个耗电模块&#xff0c; SOC(CPU&#xff0c;GPU&#xff0c;DDR)&#xff0c;Display&#xff0c;Audio&#xff0c;Video&#xff0…

loguru的简单使用

详细使用&#xff1a;Table of contents — loguru documentation 【1】日志的级别 日志级别默认分为6种 1、NOTSET (0)2、DEBUG (1)3、INFO (2)4、WARNING (3)5、ERROR (4)6、CRITICAL (5) logging 执行时输出大于等于设置的日志级别的日志信息&#xff0c;如设置日…

zemax之初级像差理论与像差校正——慧差

通过上节介绍&#xff0c;我们已经知道在轴上视场产生的球差是旋转对称的像差。在进行光学系统设计时&#xff0c;同时需要保证轴上物点和轴外物点的成像质量。轴外物点成像时会引入轴外像差&#xff0c;即轴外视场产生的慧差&#xff08;coma aberration&#xff09; 1.慧差概…

STM32-SPI 中断

SPI协议 1.1 SPI总线介绍 SPI接口是Motorola &#xff08;motorola | Smartphones, Accessories & Smart Home Devices&#xff09;首先提出的全双工三线/四线同步串行外围接口采用主从模式&#xff08;Master Slave&#xff09;架构。 时钟由Master控制&#xff0c;在时钟…

采购业务中的主数据

目录 一、维护BP主数据业务伙伴BP的概念业务伙伴涉及的表业务伙伴维护操作一次性客商数据 二、维护物料主数据三、维护采购信息记录四、与FI相关集成点物料主数据的价格控制评估类与科目确定 一、维护BP主数据 业务伙伴BP的概念 在S/4HANA中&#xff0c;SAP引入了BP(Business…

【最通用版FPGA 实现 SPI 驱动】

最近研究了一下SPI协议的FPGA实现&#xff0c;发现网上很多大佬分享的方法都是针对某一特定的flash芯片或者某一传感器芯片来设计电路结构的。所以想根据SPI&#xff08;Serial Peripheral Interface&#xff09;的基本通讯协议实现一个通用版的SPI Master驱动。SPI在嵌入式领域…

详解Spring中基于注解的Aop编程以及Spring对于JDK和CGLIB代理方式的切换

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…