[算法练习]第三天:定长滑动窗口

643. 子数组最大平均数 I

切记,这里的三段式

右指针入队列-》判断-》左指针出队列以备下一次判断

因为这里只需要最后返回平均值,所以只需要最后进行强制类型转换为double即可,不需要提前把变量设置为double

cpp 复制代码
class Solution {
public:
    double findMaxAverage(vector<int>& nums, int k) {
        int ans = INT_MIN;
        int temp = 0;
        for(int right = 0; right < nums.size(); right++){
            // 右指针
            temp += nums[right];
            //判断
            int left = right - k + 1;
            if(left < 0) continue;
            ans = max(ans,temp);
            //左指针出队列,以备下一次入队列
            temp -= nums[left];
        }
        return (double)ans/k;
    }
};

1343. 大小为 K 且平均值大于等于阈值的子数组数目

思路一点没变

cpp 复制代码
class Solution {
public:
    int numOfSubarrays(vector<int>& arr, int k, int threshold) {
        int ans = 0;
        int temp = 0;
        for(int right = 0;right < arr.size();right++){
            temp += arr[right];

            int left = right - k + 1;
            if(left < 0) continue;
            if(temp >= threshold*k) ans++;

            temp -= arr[left];
        }
        return ans;
    }
};

2090. 半径为 k 的子数组平均值

思路很像,几乎没什么区别,这里注意示例元素和可能会超过int,要用long long;数组初始化使用-1会方便很多;

cpp 复制代码
class Solution {
public:
    vector<int> getAverages(vector<int>& nums, int k) {
        vector<int>ans(nums.size(),-1);
        long long temp = 0;
        for(int right = 0;right < nums.size();right++){
            temp += nums[right];
            
            int left = right - 2*k ;
            if(left < 0) continue;
            //判断
            ans[(left+right)/2] = temp/(2*k+1);

            temp -= nums[left];
        }
        return ans;
    }
};
相关推荐
Sagittarius_A*4 分钟前
后量子密码|通识认知 03|量子威胁辟谣:Grover 算法对对称密码的影响与误区
算法·信息安全·密码学·量子计算·pqc·后量子密码
QAQo7T2 小时前
Python组蓝桥杯备赛超详细知识点总结笔记_排序算法篇
笔记·python·算法·蓝桥杯·排序算法
千里之行,始于足下sanhai2 小时前
P8686 [蓝桥杯 2019 省 A] 修改数组 - 数字魔法大冒险 题解
c++·算法·动态规划
小星星闪亮登场2 小时前
Codeforces Round 1115 ( Div. 2)
数据结构·c++·算法·贪心算法·排序算法·codeforces
计算机小白一个2 小时前
蓝桥杯 Java B 组之哈希表应用(两数之和、重复元素判断)
java·数据结构·算法·蓝桥杯
Loge编程生活2 小时前
打卡信奥刷题(3449)用C++实现信奥题 P10429 [蓝桥杯 2024 省 B] 拔河
开发语言·数据结构·c++·算法·青少年编程
2601_957174653 小时前
大模型算法 简单 容易 用这个方法
算法
VALENIAN瓦伦尼安教学设备3 小时前
激光对中仪采购要点
数据库·嵌入式硬件·算法
Forever Nore5 小时前
LeetCode 1 两数之和
算法·leetcode·职场和发展
To_OC5 小时前
LC 3 无重复字符的最长子串:从入门滑动窗口到优化写法,再也不怕面试官追问
javascript·算法·leetcode