LeetCode---374周赛

题目列表

2951. 找出峰值

2952. 需要添加的硬币的最小数量

2953. 统计完全子字符串

2954. 统计感冒序列的数目

一、找到峰值

这个简单的模拟,代码如下

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

二、需要添加的硬币的最小数量

题目要求我们添加最小的金币数,使得我们能用已有的金币凑出1~target中的任何一个数值,这题看着简单,但是思维难度比第三题高,是那种思维题,这里讲一下思路:要先排序,因为我们在顺序时,会更容易找出规律

我们要保证1~target中的每一个元素都能被构造,那么什么情况下一个数是不能被构造出来的?假设我们能用前i个数构造出[1,x],现在我们要构造x+1这个数,怎么办?

1.如果coins[i+1] == x+1,我们当然能构造出来x+1,且一直到x+x+1我们都能构造出来

2.如果coins[i+1] < x+1,我们也能构造出x+1,且一直到x+coin[i+1]我们都能构造出来

3.如果coins[i+1]>x+1呢?显然我们就无法构造出x+1了(因为我们已经排过序了,所以coins[i+1]!=1),那么我们是补1呢?还是直接补一个x+1?显然我们肯定是补x+1,这样我们能构造出的数据区间最大为[1,2*x+1]

如此循环,得到答案,因为我们每次加的金币都会让数据区间最大化,贪心的思路如下图

这题的关键是我们要往加粗的两个语句上去思考,本质是一个数学归纳的思想

代码如下

class Solution {
public:int minimumAddedCoins(vector<int>& coins, int target) {int ans=0;int t=0;//表示[1,t]区间内的值可以构造sort(coins.begin(),coins.end());int i=0,n=coins.size();//用来遍历数组while(t<target){while(i<n&&t+1>=coins[i]){t+=coins[i];i++;if(t>=target)return ans;}t+=(t+1);ans++;}return ans;}
};

 三、统计完全子字符串

这题的完全字符串有两个条件,分别对应我们思路的两个部分:

1.条件1是标准的滑动窗口问题,共有26种固定大小的窗口需要考虑

2.条件2意味着需要将字符串拆分成符合条件的子字符串来考虑,因为子字符串是连续的,一旦出现两个相邻字符的大小相差>2,那么就不可能有一个满足条件的子字符串同时包含这两个字符

代码如下

class Solution {
public:int countCompleteSubstrings(string word, int k) {int i=0;int n=word.size(),ans=0;function<int(int,int)>getNum=[&](int start,int end)->int{int ret=0;for(int i=1;i<=26;i++){//一共有26个大小不同的窗口//滑动窗口int sz=i*k;if(sz>end-start) break;int cnt[26]={0};for(int l=start,r=start,s=0;r<end;r++){int idx=word[r]-'a';if(++cnt[idx]==k) s++;if(cnt[idx]==k+1) s--;//注意不是>kif(r-l+1>sz){idx=word[l]-'a';if(--cnt[idx]==k) s++;if(cnt[idx]==k-1) s--;//注意不是<kl++;}if(i==s) ret++;}  }return ret;};while(i<n){int begin=i;i++;while(i<n&&abs(word[i]-word[i-1])<=2)i++;if(i-begin>=k) ans+=getNum(begin,i);//[begin,i)的区间符合条件二 }return ans;}
};

四、统计感冒序列的数目

数学题,题解如下 

 代码如下

const int MX=100000;
const int MOD=1e9+7;
typedef long long LL;
LL fac[MX],inv_fac[MX];
//快速幂
LL POW(LL x,LL y){LL ret=1;while(y){if(y&1) ret=(ret*x)%MOD;x=(x*x)%MOD;y>>=1;}return ret;
}//预处理
int init=[](){fac[0]=1;for(int i=1;i<MX;i++){fac[i]=fac[i-1]*i%MOD;}//逆元inv_fac[MX-1]=POW(fac[MX-1],MOD-2);for(int i=MX-1;i>0;i--){inv_fac[i-1]=inv_fac[i]*i%MOD;}return 0;
}();long long comb(int n,int k){//n!/((n-k)!*k!)return fac[n]*inv_fac[k]%MOD*inv_fac[n-k]%MOD;
}class Solution {
public:int numberOfSequence(int n, vector<int>& sick) {int m=sick.size();int total=n-m;long long ans=comb(total,sick[0])*comb(total-sick[0],n-sick.back()-1)%MOD;total-=sick[0]+n-sick.back()-1;int x=0;for(int i=0;i<m-1;i++){int k=sick[i+1]-sick[i]-1;if(k){x+=k-1;ans=ans*comb(total,k)%MOD;total-=k;}}return ans*POW(2,x)%MOD;}
};

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

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

相关文章

Springboot整合阿里云短信服务

目录 1.注册登录用户 2.点击AccessKey管理&#xff0c;开通使用子用户AccessKey 2.1点击进入AccessKey管理 2.2点击用户创建用户 2.3选择控制台创建 2.4权限修改 3.短信服务 4.创建Springboot项目使用SDK 4.1创建一个springboot项目 4.2导入阿里云短信Maven依赖 4.3…

N体问题-MATLAB 中的数值模拟

一、说明 万有引力是宇宙普适真理&#xff0c;当计算两个物体的引力、质量、距离的关系是经典万有引力物理定律&#xff0c;然而面向复杂问题&#xff0c;比如出现三个以上物体的相互作用&#xff0c;随时间的运动力学&#xff0c;这种数学模型将是更高级的思维方法。本文将阐述…

gin使用自签名SSL证书与自签名证书不受信任方法解决

文章目录 1. X.509 V3证书介绍2、使用openssl生成自签名证书和解决不受信任问题2.1、生成根证书2.2、为域名生成证书申请文件2.3、为域名创建证书的扩展描述文件2.4、为域名创建证书 3、Go应用中使用自签名证书3.1、gin框架调用实现3.2、运行效果 4、使用java的bouncycastle生成…

比较好的python书籍,python有什么书推荐

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;比较好的python书籍&#xff0c;python有什么书推荐&#xff0c;现在让我们一起来看看吧&#xff01; 我是在半年前接触到Python的&#xff0c;我之前没有一点编程基础&#xff0c;但在我自学的这半年里&#xff0c;我发…

Saas 中 用默认的值,不初始化给商户值,sql 查询 group by中,指定字段 倒序

在saas 项目中&#xff0c;有些商户没有设定某些值&#xff0c;则用系统默认的值&#xff0c;不需要初始化给商户 SELECT * FROM app_public_config WHERE (name, merchant_id) IN (SELECT name, MAX(merchant_id)FROM app_public_configGROUP BY name ) and merchant_id IN …

vue3 后台返回的接口数据,下载图片到本地

vue3 后台返回的接口数据&#xff0c;下载图片到本地 <el-table><el-table-column align"left" label"操作" min-width"240"><template #default"scope"><el-button icon"edit" type"primary&quo…

我的NPI项目之Android 安全系列 -- Android Strongbox 初识

从Android9(Pie)开始,Google强烈建议支持Strongbox. 具体描述如下: 一直到目前的Android14. 对应的内容也一并贴出来: 说人话就是Android开始通过独立于主SoC的单元进行密钥存储了。 通常&#xff0c;这样的单元就是我们通常称作的Secure Element&#xff08;SE&#xff09;&am…

高效备份与大数据分析:揭秘亚马逊云科技海外服务器强大能力

首先&#xff0c;让我们先来了解一下云计算的基本概念。云计算是一种基于互联网的计算模式&#xff0c;通过将计算资源、存储空间和应用程序提供给用户&#xff0c;实现按需使用和付费的方式。依托于众多出彩的海外服务器产品我们可以获得这一体验。云计算能够极大地简化用户的…

OpenCV-Python:DevCloud CodeLab介绍及学习

1.Opencv-Python演示环境 windows10 X64 企业版系统python 3.6.5 X64OpenCV-Python 3.4.2.16本地PyCharm IDE线上注册intel账号&#xff0c;使用DevCloud CodeLab 平台 2.DevCloud CodeLab是什么&#xff1f; DevCloud是一个基于云端的开发平台&#xff0c;提供了强大的计算…

UE5 C++(二)— 游戏架构介绍

架构关系如下&#xff1a; 这里只简单描述下&#xff0c;具体的查看官方文档 AGameMode: AGameMode 是 AGameModeBase 的子类&#xff0c;拥有一些额外的功能支持多人游戏和旧行为。 所有新建项目默认使用 AGameModeBase。 如果需要此额外行为&#xff0c;可切换到从 AGameM…

二、Java基础语法

day02 - Java基础语法 1. 注释 ​ 注释是对代码的解释和说明文字。 Java中的注释分为三种&#xff1a; 单行注释&#xff1a; // 这是单行注释文字多行注释&#xff1a; /* 这是多行注释文字 这是多行注释文字 这是多行注释文字 */ 注意&#xff1a;多行注释不能嵌套使用…

docker-harbor 私有仓库

docker 镜像 容器 仓库 仓库&#xff1a;保存镜像 私有&#xff0c;自定义用户的形式登录仓库&#xff0c;拉取或者上传镜像。&#xff08;内部隔离的用户&#xff09; harbor&#xff1a;是VMware公司开发的&#xff0c;开源的企业级的docker registry项目。 帮助用户快速…

【刷题笔记】N皇后||回溯||符合思维方式

N皇后II 1 题目详情 n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回 n 皇后问题 不同的解决方案的数量。 https://leetcode.cn/problems/n-queens-ii/ 2 分析 刚一开始的时候我认…

由@EnableWebMvc注解引发的Jackson解析异常

同事合了代码到开发分支&#xff0c;并没有涉及到改动的类却报错。错误信息如下&#xff1a; Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.conv…

【Python机器学习系列】一文讲透机器学习中的K折交叉验证(源码)

一、简介 前面我详细介绍了关于机器学习的归一化和反归一化以及表格数据在机器学习中的输入格式问题&#xff1a; 一文彻底搞懂机器学习中的归一化与反归一化问题 【Python机器学习系列】一文彻底搞懂机器学习中表格数据的输入形式&#xff08;理论源码&#xff09; 本文将介绍…

Mysql workbench

下载地址: https://download.csdn.net/download/a876106354/88616595

Numpy: 修改numpy的dtype

要修改NumPy数组的dtype&#xff0c;可以使用astype()方法。这个方法将创建一个新的数组&#xff0c;其数据类型&#xff08;dtype&#xff09;由参数指定。 下面是一个例子&#xff0c;展示如何将一个NumPy数组的dtype从int64修改为float32: import numpy as np# 创建一个in…

进程概念【linux】

进程基础 在学习进程之前&#xff0c;首先要有一定的计算机硬件和软件基础。 硬件基础&#xff1a;冯诺依曼体系结构 如图&#xff0c;是计算机在硬件上的体系结构。 下面举出一些常见的输入输出设备&#xff08;有些设备只作输出设备&#xff0c;或者只作输入设备&#xff…

LLM之Prompt(三)| XoT:使用强化学习和蒙特卡罗树搜索将外部知识注入Prompt中,性能超过CoT,ToT和GoT

​论文地址&#xff1a;https://arxiv.org/pdf/2311.04254.pdf 一、当前Prompt技术的局限性 LLM使用自然语言Prompt可以将复杂的问题分解为更易于管理的“thought”可以回复用户的问题。然而&#xff0c;大多数现有的Prompt技术都有局限性&#xff1a; 输入输出&#xff08;I…

【QT 5 调试软件+Linux下调用脚本shell-经验总结+初步调试+基础样例】

【QT 5 调试软件Linux下调用脚本shell-经验总结初步调试基础样例】 1、前言2、实验环境3、自我总结4、实验过程&#xff08;1&#xff09;准备工作-脚本1&#xff09;、准备工作-编写运行脚本文件2&#xff09;、给权限3&#xff09;、运行脚本 &#xff08;2&#xff09;进入q…