wordpress视频教程下载地址seo优化必备技巧
news/
2025/9/23 9:44:31/
文章来源:
wordpress视频教程下载地址,seo优化必备技巧,网络营销讲师,html转化wordpress题目列表
2951. 找出峰值
2952. 需要添加的硬币的最小数量
2953. 统计完全子字符串
2954. 统计感冒序列的数目
一、找到峰值 这个简单的模拟#xff0c;代码如下
class Solution {
public:vectorint findPeaks(vectorint mountain) {int nmountain…题目列表
2951. 找出峰值
2952. 需要添加的硬币的最小数量
2953. 统计完全子字符串
2954. 统计感冒序列的数目
一、找到峰值 这个简单的模拟代码如下
class Solution {
public:vectorint findPeaks(vectorint mountain) {int nmountain.size();vectorintans;for(int i1;in-1;i){if(mountain[i]mountain[i-1]mountain[i]mountain[i1])ans.push_back(i);}return ans;}
};
二、需要添加的硬币的最小数量
题目要求我们添加最小的金币数使得我们能用已有的金币凑出1~target中的任何一个数值这题看着简单但是思维难度比第三题高是那种思维题这里讲一下思路要先排序因为我们在顺序时会更容易找出规律
我们要保证1~target中的每一个元素都能被构造那么什么情况下一个数是不能被构造出来的假设我们能用前i个数构造出[1,x]现在我们要构造x1这个数怎么办
1.如果coins[i1] x1我们当然能构造出来x1且一直到xx1我们都能构造出来
2.如果coins[i1] x1我们也能构造出x1且一直到xcoin[i1]我们都能构造出来
3.如果coins[i1]x1呢显然我们就无法构造出x1了(因为我们已经排过序了所以coins[i1]!1)那么我们是补1呢还是直接补一个x1显然我们肯定是补x1这样我们能构造出的数据区间最大为[12*x1]
如此循环得到答案因为我们每次加的金币都会让数据区间最大化贪心的思路如下图 这题的关键是我们要往加粗的两个语句上去思考本质是一个数学归纳的思想
代码如下
class Solution {
public:int minimumAddedCoins(vectorint coins, int target) {int ans0;int t0;//表示[1,t]区间内的值可以构造sort(coins.begin(),coins.end());int i0,ncoins.size();//用来遍历数组while(ttarget){while(int1coins[i]){tcoins[i];i;if(ttarget)return ans;}t(t1);ans;}return ans;}
}; 三、统计完全子字符串 这题的完全字符串有两个条件分别对应我们思路的两个部分
1.条件1是标准的滑动窗口问题共有26种固定大小的窗口需要考虑
2.条件2意味着需要将字符串拆分成符合条件的子字符串来考虑因为子字符串是连续的一旦出现两个相邻字符的大小相差2那么就不可能有一个满足条件的子字符串同时包含这两个字符
代码如下
class Solution {
public:int countCompleteSubstrings(string word, int k) {int i0;int nword.size(),ans0;functionint(int,int)getNum[](int start,int end)-int{int ret0;for(int i1;i26;i){//一共有26个大小不同的窗口//滑动窗口int szi*k;if(szend-start) break;int cnt[26]{0};for(int lstart,rstart,s0;rend;r){int idxword[r]-a;if(cnt[idx]k) s;if(cnt[idx]k1) s--;//注意不是kif(r-l1sz){idxword[l]-a;if(--cnt[idx]k) s;if(cnt[idx]k-1) s--;//注意不是kl;}if(is) ret;} }return ret;};while(in){int begini;i;while(inabs(word[i]-word[i-1])2)i;if(i-begink) ansgetNum(begin,i);//[begin,i)的区间符合条件二 }return ans;}
};
四、统计感冒序列的数目 数学题题解如下 代码如下
const int MX100000;
const int MOD1e97;
typedef long long LL;
LL fac[MX],inv_fac[MX];
//快速幂
LL POW(LL x,LL y){LL ret1;while(y){if(y1) ret(ret*x)%MOD;x(x*x)%MOD;y1;}return ret;
}//预处理
int init[](){fac[0]1;for(int i1;iMX;i){fac[i]fac[i-1]*i%MOD;}//逆元inv_fac[MX-1]POW(fac[MX-1],MOD-2);for(int iMX-1;i0;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, vectorint sick) {int msick.size();int totaln-m;long long anscomb(total,sick[0])*comb(total-sick[0],n-sick.back()-1)%MOD;total-sick[0]n-sick.back()-1;int x0;for(int i0;im-1;i){int ksick[i1]-sick[i]-1;if(k){xk-1;ansans*comb(total,k)%MOD;total-k;}}return ans*POW(2,x)%MOD;}
};
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912092.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!