2090. 半径为 k 的子数组平均值 - 力扣LeetCodeclass Solution {public:vectorint getAverages(vectorint nums, int k) {int nnums.size();vectorintavgs(n,-1);long long int sum0;for(int i0;in;i){sumsumnums[i];if(i2*k){continue;}avgs[i-k]sum/(2*k1);sumsum-nums[i-2*k];}return avgs;}};/*题目易得nums[i]对应的avgs[i]值中心为i,左指针i-k;右指针ik;1i-k0和iklength avgs[i](nums[i-k]nums[i-k1]...nums[ik])/(2*k1)2i-k0和iklength avgs[i]-1定长滑动窗口初始avgs内元素都是-1左指针i-2*k;右指针i;对应中心位置i-k当左指针大于等于0右指针小于数组长度即i2*k到ilength才需要计算平均值1窗口首次到2*k1从i0开始sumsumnums[i]ii1;当窗口大小首次等于2*k1时记录该sum和计算对应位置avgs(即avgs[i-k]sum[i-k])(2)后面窗口一直是2*k1但需要移动左右指针位置左指针对应位置向后移动一位上一轮结束时sumsum-nums[i-2*k]右指针对应位置向后移动一位在新的一轮ii1sumsumnums[i];记录每一轮的sum和计算对应位置avgs(即avgs[i-k]sum[i-k])感谢灵茶山艾府的分享和讲解*/