目录
075:小红的ABC
题目:
题解:
最短子串长度(大于1)只有为2和为3两种可能如:cc、cbc,只要遍历枚举一遍字符串即可。
#include<iostream>
#include<string>
using namespace std;
string s;
int main()
{
cin>>s;
int ret=-1;
int n=s.size();
for(int i=0;i<n;i++)
{
//二元组
if(i+1<n && s[i]==s[i+1])
{
ret=2;
}
//三元组
if(i+2<n && s[i]==s[i+2])
{
ret=3;
}
}
cout<<ret<<endl;
return 0;
}
076:不相邻取数
题目链接:不相邻取数_牛客题霸_牛客网 (nowcoder.com)
题目:
题解:
动态规划:
状态表示:dp[i]前i个物体中,取不相邻数的最大值。
状态转移方程:
填表:从左向右正常填表即可
一模一样的力扣题:LCR 089. 打家劫舍 - 力扣(LeetCode)
#include <iostream>
using namespace std;
const int N=2e5+10;
int n;
long long a[N];
long long dp[N];
int main()
{
cin>>n;
long long ret=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
dp[1]=a[1];
dp[2]=max(dp[1],a[2]);
for(int i=3;i<=n;i++)
{
dp[i]=max(dp[i-1],dp[i-2]+a[i]);
}
cout<<dp[n]<<endl;
return 0;
}
077:空调遥控
题目链接:空调遥控 (nowcoder.com)
题目:
题解:
滑动窗口:
维护窗口内最大温差小于p*2
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int n,p;
int a[N];
int main()
{
cin>>n>>p;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);
int left=0,right=0;
int ret=0;
for(int i=0;i<n;i++)
{
while(a[right]-a[left]>p*2)
{
left++;//进窗口
}
ret=max(ret,right-left+1);//维护最大窗口大小
right++; //出窗口
}
cout<<ret<<endl;
return 0;
}