首页 > 其他分享 >2090. 半径为 k 的子数组平均值

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

时间:2025-01-21 20:30:29浏览次数:3  
标签:平均值 滑窗 nums curSum vector 2090 数组 res 半径

在这里插入图片描述
【题目】: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下标到达半径中心的时候,还不知道此时数组内元素和,所以可以等到滑窗长度达到条件时,再去反推半径中心。

标签:平均值,滑窗,nums,curSum,vector,2090,数组,res,半径
From: https://blog.csdn.net/qq_57882997/article/details/145289843

相关文章

  • 33. 搜索旋转排序数组
    整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]](下标从0开始计数)。例如,[0,1,2,4,5,6,7]在下标3处经......
  • C语言中的二维数组
    1.二维数组的定义类型说明符数组名 [常量表达式][常量表达式];(1).类型说明符      表示二维数组中数据元素的类型 (2).数组名          标识符 (3).[常量表达式][常量表达式]      第1维       第2维   ......
  • 树状数组
    Question01[P3374树状数组一]模板题Code#include<bits/stdc++.h>usingnamespacestd;constintN=5e5+7;classTree{ public: inlinevoidscan(longlong*_data,int_size){ size=_size; for(inti=1;i<=size;i++)_data[i]+=_data[i-1]; for(inti......
  • 5、原来可以这样理解C语言_数组
    目录​编辑1.数组的概念2.⼀维数组的创建和初始化2.1数组创建⼀维数组创建的基本语法如下:2.2数组的初始化2.3数组的类型3.⼀维数组的使⽤ 3.1数组下标3.2数组元素的打印3.3数组的输⼊4.⼀维数组在内存中的存储5.sizeof计算数组元素个数6.⼆维数组......
  • 树状数组
    l(x)=x-lowbit(x)+1。即,l(x)是c[x]管辖范围的左端点。对于任意正整数x,总能将x表示成s*2^{k+1}+2^k的形式,其中lowbit(x)=2^k。下面「c[x]和c[y]不交」指c[x]的管辖范围和c[y]的管辖范围不相交,即[l(x),x]和[l(y),y]不相交。「c[x]包含于c[y]」......
  • 剑指offer面试题3:数组中重复的数字(Python实现)
    """面试题3:数组中重复的数字在一个长度为n的数组里所有数字都在0~n-1的范围内,某些数字是重复的,找出任意一个重复的数字"""defduplicate1(numbers:list,length:int)->int:"""修改原数组"""ifnumbers==[]orlength<=0:......
  • java —— 数组(超详细教程)
    介绍:这期讲的是java的原生数组,也就是list(静态空间),空间是写死的;后期的ArrayList是动态数组。我们需要先认识基础的格式,方便后面的ArrayList学习。一、创建数组(一)方法一:1、先声明,再定义长度。publicstaticvoidmain(String[]args){//声明变量int[......
  • C语言逆序操作数组和引用传递参数
    ////main.c//Test_C////Createdbystevexiaohuzhaoon2025/1/20.//#include<stdio.h>//C语言指针传递参数(引用传递)voidswap(int*px,int*py){intt=*px;*px=*py;*py=t;}voidtest(intn){intx=1;for(inti......
  • leetcode349-两个数组的交集
    leetcode349实现利用哈希set进行去重,然后循环nums2,如果nums2中的元素是在去重后的num1中出现过的,就存放在set2中,因为最后要返回的是不重复的数组,所以先放在set2,让其进行去重,最后把set2转为数组方法1varintersection=function(nums1,nums2){constset1=[........
  • PTA 之 数组元素循环右移问题
    一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0​A1​⋯AN−1​)变换为(AN−M​⋯AN−1​A0​A1​⋯AN−M−1​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:......