七月第六天解题报告
本文实现了超链接跳转,查询题目可直接点击题号跳转LeetCode
目录
643. 子数组最大平均数 I
718. 最长重复子数组
978. 最长湍流子数组
1052. 爱生气的书店老板
题目
代码演示
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
int l = 0, r = -1;
int sum = 0;
int maxval = -10000000001;
while(r < (int)nums.size() - 1){
++r;
sum += nums[r];
while(r - l + 1 > k){
sum -= nums[l];
++l;
}
if(r - l + 1 == k){
maxval = max(maxval, sum);
}
}
return maxval * 1.0 / k;
}
};
代码演示
class Solution {
int dp[1010][1010];
public:
int findLength(vector<int>& nums1, vector<int>& nums2) {
int n = nums1.size();
int m = nums2.size();
int maxv = 0;
for(int i = 0; i < n; ++i){
for(int j = 0; j < m; ++j){
if(!i || !j){
dp[i][j] = (nums1[i] == nums2[j]) ? 1 : 0;
}else{
dp[i][j] = (nums1[i] == nums2[j]) ? dp[i-1][j-1] + 1 : 0;
}
maxv = max(maxv, dp[i][j]);
}
}
return maxv;
}
};
代码演示
class Solution {
public:
int maxTurbulenceSize(vector<int>& arr) {
int ans = 0;
int aec[40010], des[40010];
for(int i = 0; i < arr.size(); ++i){
aec[i] = des[i] = 1;
if(i){
if(arr[i] > arr[i-1]){
aec[i] = des[i-1]+1;
}
if(arr[i] < arr[i-1]){
des[i] = aec[i-1]+1;
}
}
ans = max(ans, max(aec[i], des[i]));
}
return ans;
}
};
代码演示
class Solution {
public:
int maxSatisfied(vector<int>& customers, vector<int>& grumpy, int minutes) {
vector<int>preSum(customers.size());
int add=0,maxi=0,ans=0;
add=grumpy[0]?0:customers[0];
preSum[0]=add;
for(int i=1;i<customers.size();i++){
add=grumpy[i]?0:customers[i];
preSum[i]=preSum[i-1]+add;
}
int i=0,j=0;
for(int j=0;j<customers.size();j++){
if(j-i+1>minutes){
i++;
}
if(j-i+1==minutes){
maxi=preSum[customers.size()-1];
for(int m=i;m<=j;m++){
if(grumpy[m]==1)maxi+=customers[m];
}
ans=max(maxi,ans);
}
}
return ans;
}
};