题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个整型数组和一个数字 k,要求返回一个数组,每一位对应以该位为中心,半径为 k 的子数组平均值(如果位数不够,则置-1)(如果半径为 3,那么子数组长度为 7)

思路分享

代码解答(强烈建议自行解答后再看)

  • 陆爻齐解法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
vector<int> getAverages(vector<int>& nums, int k) {
int window_size = 1 + 2*k;
long long sum = 0;
int nums_size = nums.size();
vector<int> avg(nums_size, -1);
for (int i = 0; i < nums_size; i++) {
sum += nums[i];

if (i < window_size - 1) continue;

avg[i-k] = sum / window_size;

sum -= nums[i-window_size+1];
}

return avg;
}
};