70
70
71
71
<!-- 这里可写通用的实现逻辑 -->
72
72
73
+ 前缀和。
74
+
73
75
<!-- tabs:start -->
74
76
75
77
### ** Python3**
76
78
77
79
<!-- 这里可写当前语言的特殊实现逻辑 -->
78
80
79
81
``` python
80
-
82
+ class Solution :
83
+ def getAverages (self , nums : List[int ], k : int ) -> List[int ]:
84
+ n = len (nums)
85
+ presum = [0 ] * (n + 1 )
86
+ for i in range (n):
87
+ presum[i + 1 ] = presum[i] + nums[i]
88
+ return [- 1 if i - k < 0 or i + k >= n else (presum[i + k + 1 ] - presum[i - k]) // (k * 2 + 1 ) for i in range (n)]
81
89
```
82
90
83
91
### ** Java**
84
92
85
93
<!-- 这里可写当前语言的特殊实现逻辑 -->
86
94
87
95
``` java
88
-
96
+ class Solution {
97
+ public int [] getAverages (int [] nums , int k ) {
98
+ int n = nums. length;
99
+ long [] presum = new long [n + 1 ];
100
+ for (int i = 0 ; i < n; ++ i) {
101
+ presum[i + 1 ] = presum[i] + nums[i];
102
+ }
103
+ int [] ans = new int [n];
104
+ for (int i = 0 ; i < n; ++ i) {
105
+ if (i - k < 0 || i + k >= n) {
106
+ ans[i] = - 1 ;
107
+ } else {
108
+ ans[i] = (int ) ((presum[i + k + 1 ] - presum[i - k]) / (k * 2 + 1 ));
109
+ }
110
+ }
111
+ return ans;
112
+ }
113
+ }
89
114
```
90
115
91
116
### ** TypeScript**
@@ -99,7 +124,7 @@ function getAverages(nums: number[], k: number): number[] {
99
124
for (let i = 0 ; i < n ; i ++ ) {
100
125
sum += nums [i ];
101
126
let shiftIndex = i - l ;
102
- if ( shiftIndex > - 1 ) {
127
+ if (shiftIndex > - 1 ) {
103
128
sum -= nums [shiftIndex ];
104
129
}
105
130
if (i + 1 >= l ) {
@@ -110,6 +135,45 @@ function getAverages(nums: number[], k: number): number[] {
110
135
};
111
136
```
112
137
138
+ ### ** C++**
139
+
140
+ ``` cpp
141
+ class Solution {
142
+ public:
143
+ vector<int > getAverages(vector<int >& nums, int k) {
144
+ int n = nums.size();
145
+ vector<long long > presum(n + 1);
146
+ for (int i = 0; i < n; ++i) presum[ i + 1] = presum[ i] + nums[ i] ;
147
+ vector<int > ans;
148
+ for (int i = 0; i < n; ++i)
149
+ if (i - k < 0 || i + k >= n) ans.push_back(-1);
150
+ else ans.push_back((presum[ i + k + 1] - presum[ i - k] ) * 1ll / (k * 2 + 1));
151
+ return ans;
152
+ }
153
+ };
154
+ ```
155
+
156
+ ### **Go**
157
+
158
+ ```go
159
+ func getAverages(nums []int, k int) []int {
160
+ n := len(nums)
161
+ presum := make([]int64, n+1)
162
+ for i, num := range nums {
163
+ presum[i+1] = presum[i] + int64(num)
164
+ }
165
+ var ans []int
166
+ for i := 0; i < n; i++ {
167
+ if i-k < 0 || i+k >= n {
168
+ ans = append(ans, -1)
169
+ } else {
170
+ ans = append(ans, int((presum[i+k+1]-presum[i-k])/int64(k*2+1)))
171
+ }
172
+ }
173
+ return ans
174
+ }
175
+ ```
176
+
113
177
### ** ...**
114
178
115
179
```
0 commit comments