目录
class Solution {
public:
double findMaxAverage(vector<int>& nums, int k) {
double sum = 0;
double res = 0;
for(int i = 0;i < k;i++)sum += nums[i];
res = sum / k;
int l = 0,r = k;
for(;r < nums.size();){
sum += nums[r++];
sum -= nums[l++];
res = max(res,sum / k);
}
return res;
}
};
时间复杂度O(n)
空间复杂度O(1)
class Solution {
public:
bool isVowel(char ch){
return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u';
}
int maxVowels(string s, int k) {
int res = 0;
for(int i = 0;i < k;i++){
res += isVowel(s[i]);
}
int temp = res;
for(int i = k;i < s.size();i++){
temp += isVowel(s[i]) - isVowel(s[i - k]);
res = max(res,temp);
}
return res;
}
};
时间复杂度O(n)
空间复杂度O(1)
在确保区间内0的总数小于k的情况下统计1的数量?
class Solution {
public:
int longestOnes(vector<int>& nums, int k) {
int res = 0,sum = 0;
for(int r = 0,l = 0;r < nums.size();r++){
if(!nums[r])sum++;
while(sum > k)
if(!nums[l++])
sum--;
res = max(r - l +1,res);
}
return res;
}
};
时间复杂度O(n)
空间复杂度O(1)
与1004 最大连续1的个数 |||思路相同?
class Solution {
public:
int longestSubarray(vector<int>& nums) {
int res = 0,sum = 0;
for(int r = 0,l = 0;r < nums.size();r++){
if(!nums[r])sum++;
while(sum > 1){
if(!nums[l++]){
sum--;
}
}
res = max(res,r - l);//注意题意,需要删除一个元素,这里不加1
}
return res;
}
};
时间复杂度O(n)
空间复杂度O(1)