当前位置: 首页 > article >正文

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

在这里插入图片描述
【题目】:2090. 半径为 k 的子数组平均值

class Solution {
public:
    vector<int> getAverages(vector<int>& nums, int k) {
        vector<int> res(nums.size(), -1);
        long curSum = 0; // 记录当前滑窗内的数值和
        for(int l = 0, r = 0; r < nums.size(); ++r) {
            curSum += nums[r];
            if(r - l + 1 == k * 2 + 1) { // 窗口长度满足条件
                res[r - k] = curSum / (k * 2 + 1); // 当长度满足时,此时对应的半径中心坐标是:r - k
                curSum -= nums[l++]; // 缩小窗口
            }
        }
        return res;
    }
};
  • 时间复杂度: O(n)
  • 空间复杂度: O(1)

半径为 k 的子数组:说明滑窗的长度(r - l + 1)必须要达到2 * k + 1。但是当r下标到达半径中心的时候,还不知道此时数组内元素和,所以可以等到滑窗长度达到条件时,再去反推半径中心。


http://www.kler.cn/a/513543.html

相关文章:

  • .NET 8 项目 Docker 方式部署到 Linux 系统详细操作步骤
  • StarRocks强大的实时数据分析
  • Ubuntu cuda-cudnn中断安装如何卸载
  • Windows电脑桌面记录日程安排的提醒软件
  • 数学基础 --线性代数之理解矩阵乘法
  • 力扣 739. 每日温度
  • 【深度学习基础】多层感知机 | 多层感知机概述
  • Android开发,待办事项提醒App的设计与实现(个人中心页)
  • httpx上传文件/IO流缓慢的问题分析及解决
  • SQL-leetcode—1141. 查询近30天活跃用户数
  • 在亚马逊云科技上用AI提示词优化功能写出漂亮提示词(下)
  • css动画水球图
  • 【数学建模美赛速成系列】O奖论文绘图复现代码
  • VM模块开发 C++ 工程配置
  • “大模型横扫千军”背后的大数据挖掘--浅谈MapReduce
  • Spring Boot + Netty + WebSocket 实现消息推送
  • 深挖——final
  • 分布式搜索引擎02
  • Emacs折腾日记(十一)——求值规则
  • EXCEL的一些用法记录
  • 每日一刷——1.20——准备蓝桥杯
  • 【全栈】SprintBoot+vue3迷你商城(5)
  • 经验收录/用复盘的心态去学习
  • Stable Diffusion 提示词编写技巧及示例
  • 4.6.3递归算法
  • RTK定位